开始之前
为了满足业务需求,我决定使用Coze开发一个智能体应用。不过,发现Coze的文档有些零散,很多细节需要到不同的页面反复查找,特别是一些基础问题并没有明确的解答,缺乏一篇quickstart端到端地解决一个最简单的问题。
因此,我决定将自己遇到的困难和解决方法整理成一个简单的教程,帮助大家轻松入门,快速开发一个基于API的Coze智能体应用。
步骤一:创建Coze账号并获取API密钥
- 访问Coze官网:www.coze.cn ,注册一个账号,选择基础版即可。
- 登录后,进入获取AKSK的地址,生成一个个人API密钥(SK),它的格式类似于
pat_*****
。
步骤二:创建智能体
- 在登陆coze后的首页,点击左上角的“+”按钮,创建一个新的智能体。你可以随便输入智能体名称,例如“翻译机器人”。
- 创建后,你将被引导到智能体的详情页面,记下页面地址中的
space_id
(工作空间ID)和bot_id
(智能体ID)。例如,URL可能是:https://www.coze.cn/space/7444103834140033060/bot/7444114878757437479
。 - 记下来此处的space/{space_id} ,这里这个space_id就是后面代码要用到的参数;
- 记下来此处的bot/{bot_id},如果你需要指定特定的bot,也需要用到这个参数;
此时,你已经准备好了开发所需的基本信息:API密钥、工作空间ID和智能体ID。
步骤三:安装开发环境
在开始写代码之前,我们需要安装Coze的Python SDK。可以通过以下命令来安装:
pip install cozepy
步骤四:编写代码
接下来是实现代码部分。以下是一个简单的main.py
文件,展示如何创建并与Coze智能体进行对话。
import os
from pathlib import Path
from cozepy import Coze, TokenAuth, BotPromptInfo, Message, ChatEventType, MessageContentType, COZE_CN_BASE_URL
def initialize_coze_client():
"""初始化 Coze 客户端"""
coze_api_token = os.getenv("COZE_API_TOKEN")
if not coze_api_token:
raise ValueError("请设置环境变量 COZE_API_TOKEN")
return Coze(auth=TokenAuth(token=coze_api_token), base_url=COZE_CN_BASE_URL)
def upload_avatar(coze, file_path: Path):
"""上传头像并返回头像ID"""
avatar = coze.files.upload(file=file_path)
return avatar.id
def create_bot(coze, avatar_id: str, space_id: str, bot_name: str, prompt: str):
"""创建智能体并返回"""
bot = coze.bots.create(
space_id=space_id,
name=bot_name,
icon_file_id=avatar_id,
prompt_info=BotPromptInfo(prompt=prompt)
)
return bot
def publish_bot(coze, bot):
"""发布智能体为API服务"""
coze.bots.publish(bot_id=bot.bot_id)
def start_conversation(coze, bot_id: str, user_id: str, user_message: str):
"""启动对话流并实时输出消息"""
for event in coze.chat.stream(
bot_id=bot_id,
user_id=user_id,
additional_messages=[Message.build_user_question_text(user_message)],
):
if event.event == ChatEventType.CONVERSATION_MESSAGE_DELTA:
if isinstance(event.message.content, str):
print(event.message.content, end="", flush=True)
elif hasattr(event.message.content, 'type') and event.message.content.type == MessageContentType.TEXT:
print(event.message.content.text, end="", flush=True)
if event.event == ChatEventType.CONVERSATION_CHAT_COMPLETED:
print("\n对话结束。")
print("token 使用情况:", event.chat.usage.token_count)
def main():
"""主程序入口"""
# 初始化 Coze 客户端
coze = initialize_coze_client()
# 上传头像并获取头像ID
avatar_id = upload_avatar(coze, Path("image.png"))
# 创建智能体
space_id = "7444103834140033060" # 替换为你的工作空间ID
bot_name = "翻译机器人" # 智能体名称
prompt = "你是一个翻译助手,翻译以下英文为中文" # 智能体的提示内容
bot = create_bot(coze, avatar_id, space_id, bot_name, prompt)
# 发布智能体为API服务
publish_bot(coze, bot)
# 启动对话流
user_id = "unique_user_id" # 替换为实际用户ID
user_message = "请翻译以下内容:Hello, how are you?" # 用户输入的消息
start_conversation(coze, bot.bot_id, user_id, user_message)
if __name__ == "__main__":
main()
运行效果
当你运行代码时,智能体会根据用户输入的消息进行处理,并实时返回翻译结果。
以下是应用的效果截图: