使用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世界!

相关推荐
小道士写程序2 分钟前
自然语言处理NLP - 第3章 从字符到Token:机器的输入长什么样
人工智能·机器学习
Mr数据杨2 分钟前
钻石价格预测实战 从 Kaggle 回归赛题看结构化数据建模落地
人工智能·数据分析·kaggle竞赛
Mr数据杨5 分钟前
从 Kaggle 到实战的多标签文本分类案例拆解
人工智能·数据分析·kaggle竞赛
福昕办公8 分钟前
智能体手机落地,Agent 正在从“云端调用“走向“长进软件本体“
人工智能·智能手机
DolphinScheduler社区13 分钟前
把 Apache DolphinScheduler 变成 Agent 的“手和脚”:从调度平台到自然语言数据入口
人工智能·开源·apache·agent·技术分享·海豚调度·大数据工作流调度
weixin_4462608528 分钟前
基于熵的选择性智能体引导:从非完美视觉语言模型教师学习自主策略
人工智能·学习·语言模型
夜雪一千33 分钟前
如何写一个数据分析 Skill
人工智能·数据挖掘·数据分析
桃西西呀33 分钟前
RAG 接个向量库就完事?从切块到重排的 7 步流水线,我替你踩了 8 个深坑
人工智能·llm·ai编程
YOLO数据集集合38 分钟前
无人机屋顶与地物分割数据集 | 屋顶分割 航拍识别 城市规划 材质分类 实例分割9036期
人工智能·分类·无人机·材质·中国城市建筑·建筑识别
zhangfeng113343 分钟前
CodeBuddy‑CLI 默认授权(权限模式)命令行参数
人工智能·ai编程