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

相关推荐
江畔柳前堤13 小时前
roLabelImg 详细安装教程
开发语言·人工智能·后端·云原生
阿里云大数据AI技术13 小时前
分链路差异化设计的DSP准实时数仓|钛动科技基于阿里云实时计算 Flink 版 + DLF Paimon + EMR Serverless StarRocks 的实践
人工智能·flink
陕西企来客13 小时前
2026年7月AI智能搜索曝光趋势研判
大数据·人工智能·机器学习·ai智能搜索曝光
阿里云大数据AI技术14 小时前
从算力到智能体,面向 Agentic AI 的基础设施演进
人工智能·agent
hangyuekejiGEO15 小时前
GEO技术服务选型指南
大数据·人工智能·python
阿里云大数据AI技术15 小时前
EMR Serverless Spark AI Function 的双维降本实践
人工智能·sql·spark
维基框架15 小时前
GitHub源码处理提速 一趟扫描反而更慢
人工智能·github
冬奇Lab15 小时前
代码库知识库系列(05):向量检索 vs 知识图谱——加了调用图并没有变更好
人工智能
AKAMAI15 小时前
你的源服务器可能是你做出的最昂贵决定
运维·人工智能·云计算
冬奇Lab16 小时前
【无标题】
人工智能·开源