前言
Coze是一个强大的AI平台,允许开发者创建和部署智能体。通过其API,我们可以程序化地与这些智能体进行交互。本文将展示如何使用Python来实现这一过程。
准备工作
在开始之前,请确保您已经:
- 在Coze平台上创建了一个智能体
- 获取了您的BOT_ID和API_TOKEN
- 安装了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()
代码解析
-
配置: 首先,我们设置了必要的API配置,包括BOT_ID和API_TOKEN。
-
发送聊天请求 :
send_chat_request
函数负责向Coze API发送包含用户问题的请求。 -
获取聊天消息 :
get_chat_messages
函数用于获取智能体的回答。 -
主程序:
- 发送聊天请求
- 从响应中提取chat_id和conversation_id
- 使用这些ID尝试获取智能体的回答
- 如果没有立即获得回答,会进行多次重试
-
重试机制: 考虑到API的异步特性,我们实现了一个重试机制。脚本最多尝试5次,每次间隔5秒,以给智能体足够的时间处理问题。
注意事项
- 请确保将
YOUR_BOT_ID
和YOUR_API_TOKEN
替换为您实际的BOT ID和API令牌。 - 这个脚本使用了
requests
库,请确保已经安装(pip install requests
)。 - 处理敏感信息时要小心,避免将API令牌等信息公开分享。
结论
通过这个Python脚本,我们成功实现了与Coze平台智能体的交互。这为开发更复杂的应用程序提供了基础,例如聊天机器人、自动问答系统等。
随着AI技术的不断发展,像Coze这样的平台为开发者提供了强大的工具来创建智能应用。希望这篇文章能够帮助您开始探索AI应用开发的exciting世界!