零基础入门:如何使用coze和python来开发最简单的bot

530 阅读3分钟

开始之前

为了满足业务需求,我决定使用Coze开发一个智能体应用。不过,发现Coze的文档有些零散,很多细节需要到不同的页面反复查找,特别是一些基础问题并没有明确的解答,缺乏一篇quickstart端到端地解决一个最简单的问题。

因此,我决定将自己遇到的困难和解决方法整理成一个简单的教程,帮助大家轻松入门,快速开发一个基于API的Coze智能体应用。

步骤一:创建Coze账号并获取API密钥

  1. 访问Coze官网:www.coze.cn ,注册一个账号,选择基础版即可。
  2. 登录后,进入获取AKSK的地址,生成一个个人API密钥(SK),它的格式类似于pat_*****

步骤二:创建智能体

  1. 登陆coze后的首页,点击左上角的“+”按钮,创建一个新的智能体。你可以随便输入智能体名称,例如“翻译机器人”。
  2. 创建后,你将被引导到智能体的详情页面,记下页面地址中的space_id(工作空间ID)和bot_id(智能体ID)。例如,URL可能是:https://www.coze.cn/space/7444103834140033060/bot/7444114878757437479
  3. 记下来此处的space/{space_id} ,这里这个space_id就是后面代码要用到的参数;
  4. 记下来此处的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()

运行效果

当你运行代码时,智能体会根据用户输入的消息进行处理,并实时返回翻译结果。

以下是应用的效果截图:

image.png