使用Python调用Coze API实现智能对话

前言

Coze是一个强大的AI平台,允许开发者创建和部署智能体。通过其API,我们可以程序化地与这些智能体进行交互。本文将展示如何使用Python来实现这一过程。

准备工作

在开始之前,请确保您已经:

  1. 在Coze平台上创建了一个智能体
  2. 获取了您的BOT_ID和API_TOKEN
  3. 安装了Python和requests库

代码实现

以下是完整的Python脚本,用于与Coze API进行交互:

python 复制代码
import requests
import json
import time

# API 配置
BOT_ID = "YOUR_BOT_ID"
API_TOKEN = "YOUR_API_TOKEN"
BASE_URL = "https://api.coze.cn/v3"

# 发送聊天请求
def send_chat_request(question):
    url = f"{BASE_URL}/chat"
    headers = {
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    }
    data = {
        "bot_id": BOT_ID,
        "user_id": "123456789",  # 可以使用任意用户ID
        "stream": False,
        "auto_save_history": True,
        "additional_messages": [
            {
                "role": "user",
                "content": question,
                "content_type": "text"
            }
        ]
    }
    
    response = requests.post(url, headers=headers, json=data)
    return response.json()

# 获取聊天消息
def get_chat_messages(chat_id, conversation_id):
    url = f"{BASE_URL}/chat/message/list?chat_id={chat_id}&conversation_id={conversation_id}"
    headers = {
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    }
    
    response = requests.get(url, headers=headers)
    return response.json()

# 主程序
def main():
    question = "今天成都天气如何?"
    
    # 发送聊天请求
    chat_response = send_chat_request(question)
    print("Chat response:", json.dumps(chat_response, indent=2, ensure_ascii=False))
    
    if "code" in chat_response and chat_response["code"] == 0 and "data" in chat_response:
        chat_id = chat_response["data"].get("id")
        conversation_id = chat_response["data"].get("conversation_id")
        
        if chat_id and conversation_id:
            # 尝试获取聊天消息,最多重试5次
            for attempt in range(5):
                print(f"尝试获取消息,第 {attempt + 1} 次")
                messages = get_chat_messages(chat_id, conversation_id)
                print("Messages response:", json.dumps(messages, indent=2, ensure_ascii=False))
                
                if "code" in messages and messages["code"] == 0 and "data" in messages and messages["data"]:
                    for message in messages["data"]:
                        if message["role"] == "assistant" and message["type"] == "answer":
                            print("智能体的回答:", message["content"])
                            return
                    print("未找到智能体的回答,等待5秒后重试")
                else:
                    print("获取聊天消息失败或返回格式不正确,等待5秒后重试")
                
                time.sleep(5)  # 等待5秒后重试
            
            print("所有重试都失败,无法获取智能体的回答")
        else:
            print("chat_id 或 conversation_id 未在响应中找到")
    else:
        print("发送聊天请求失败或返回格式不正确")

if __name__ == "__main__":
    main()

代码解析

  1. 配置: 首先,我们设置了必要的API配置,包括BOT_ID和API_TOKEN。

  2. 发送聊天请求 : send_chat_request函数负责向Coze API发送包含用户问题的请求。

  3. 获取聊天消息 : get_chat_messages函数用于获取智能体的回答。

  4. 主程序:

    • 发送聊天请求
    • 从响应中提取chat_id和conversation_id
    • 使用这些ID尝试获取智能体的回答
    • 如果没有立即获得回答,会进行多次重试
  5. 重试机制: 考虑到API的异步特性,我们实现了一个重试机制。脚本最多尝试5次,每次间隔5秒,以给智能体足够的时间处理问题。

注意事项

  • 请确保将YOUR_BOT_IDYOUR_API_TOKEN替换为您实际的BOT ID和API令牌。
  • 这个脚本使用了requests库,请确保已经安装(pip install requests)。
  • 处理敏感信息时要小心,避免将API令牌等信息公开分享。

结论

通过这个Python脚本,我们成功实现了与Coze平台智能体的交互。这为开发更复杂的应用程序提供了基础,例如聊天机器人、自动问答系统等。

随着AI技术的不断发展,像Coze这样的平台为开发者提供了强大的工具来创建智能应用。希望这篇文章能够帮助您开始探索AI应用开发的exciting世界!

相关推荐
滴图服务-七七16 小时前
滴滴地图:精准定位赋能企业数字化转型
大数据·人工智能·地图服务·甲级测绘资质·商业授权
爱学习的程序媛16 小时前
2026上半年大模型全景技术解读:推理融合、Agent 爆发与多模态统一
人工智能·ai
A.说学逗唱的Coke18 小时前
【大模型专题】向量数据库深度解析:从原理到实战,构建企业级 AI 知识检索底座
数据库·人工智能
果丁智能18 小时前
智能锁赋能网约房民宿数字化管控:身份核验+远程授权,筑牢安全防线、降本增效
网络·数据库·人工智能·安全·智能家居
V搜xhliang024618 小时前
AI智能体的数据安全与合规实践
人工智能·学习·数据分析·自动化·ai编程
PPIO派欧云18 小时前
PPIO登上贵州新闻联播,深化AI算力生态建设
人工智能
hai31524754318 小时前
一种通过空间几何转换进行软件编程计算的方式与现有计算的对比
人工智能·深度学习·数学建模·硬件架构·几何学·图论·拓扑学
猿饵块18 小时前
LibreOffice---文档制作
人工智能
硅谷秋水18 小时前
HARBOR:一个面向具身智体机器人强化学习的驾驭框架
人工智能·深度学习·机器学习·机器人
Mr..Jackey18 小时前
瑞佑 RUI Builder 图形化 UI 设计工具
arm开发·人工智能·单片机·ui·人机交互·ra8889·lcd控制芯片