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

结论

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

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

相关推荐
数睿数据无代码开发14 小时前
企业AI落地从高价值场景开始|数睿数据《AI应用场景集》正式发布
人工智能
刀笔财经15 小时前
万物构想让 AI 跑进真实生意里
人工智能
leobertlan15 小时前
杂篇 -- 拂拭念头、造器与自洽:AI 时代属于每个人的秩序
人工智能·程序员
AI_AGENT_DEV_AI15 小时前
AI 教培智能体的开发技术
人工智能
lazy熊15 小时前
Prompt 优化不是写得更长,而是把上下文分层给 AI
人工智能·prompt
甲维斯15 小时前
Kimi K3.1 Pro已测,国模终于来一个能打的 !?
人工智能
冬奇Lab15 小时前
一天一个开源项目(第246篇):rec —— Recursive 自研的本地推理引擎,在 Mac 上跑 Flint 编码模型,称比 llama.cpp 快 1.4–2.6 倍
人工智能·开源·llm
fxss15 小时前
认识闯关大冒险|十个关卡,带娃认全生活里的东西
人工智能
renhongxia115 小时前
边缘AI部署与大模型轻量化技术全景:量化、蒸馏、RAG 与智能体落地实战
大数据·人工智能
AI视频工具指南15 小时前
怎么用 AI 做悬疑短剧?
人工智能·aigc·音视频