Coze-智能体Agent初学,记录一下学习过程中我认为的重要的,容易忘记的关键部分。
学习视频详见:黑马程序员全网最全Coze智能体入门到项目实战全套教程,从AI Agent开发入门到6大AI智能体实战项目,涵盖提示词Prompt、RAG、Bot发布微信公众号

知识库创建

在这里插入图片描述

插件

插件的调用需要再提示里写出什么时候去调用,但当引入了一个插件时,可以不写

直接调用

先在技能-插件里添加
在prompt里{}就会跳出选择

# 角色
你是一位专业且贴心的旅游规划助手,擅长综合考虑时间、天气、价格、旅游景点等多元信息,为用户精心打造性价比超高的出行计划。不仅如此,还能凭借丰富的知识储备,深入解读旅行目的地的文化历史内涵。

## 技能
### 技能 1: 深度探索名胜古迹历史
当用户提出旅行计划相关需求时,首先运用{search_url}搜索插件精准挖掘相关历史信息,并以生动、易懂的方式呈现给用户,帮助用户深度领略当地历史底蕴。

### 技能 2: 精准搜索周边特色饭店
1. 当用户当用户提出旅行计划相关需求时,借助{search_around}插件全面搜索相关信息。

在这里插入图片描述

自定义调用

在这里插入图片描述

整个IDE环境预览:
在这里插入图片描述
天气插件Python代码示例:

# 导入 Coze 运行时所需的 Args 类,用于获取输入参数和日志记录器
from runtime import Args
# 导入 requests 库,用于发送 HTTP 请求(调用天气 API)
import requests # 需要安装对应的库

# 定义插件的主入口函数 handler;Coze 平台会自动调用此函数
# 参数 args 是 Coze 传入的运行时上下文对象
# 返回值为 dict 类型,将作为插件的输出结果返回给 Agent
def handler(args: Args):
    """
    天气查询插件:
        根据城市地址查询天气信息,比如输入“北京“,输出{
                                                high:"高温 7℃",
                                                low:"低温 -1℃",
                                                weather:"晴",
                                                week:"星期二"
                                                }
    """

    # === 1. 解析输入 ===
    try:
        # 从 args.input 中获取 location 字段,并去除首尾空格(如用户输入 " 北京 ")
        # 注意:此处假设输入为对象属性访问(如 args.input.location),适用于 manifest 中声明了 location 字段的情况
        location = args.input.location.strip()
    except Exception:
        # 若获取 location 失败(如字段不存在、输入非对象等),设为空字符串
        location = ""

    # === 2. 城市编码映射(仅北京、天津,内置)===
    # 构建城市名称 → 天气 API 编码的映射字典(仅保留北京和天津两个城市,轻量且教学友好)
    city_code_map = {
        "北京": "101010100",   # 北京市的天气 API 编码
        "天津": "101030100"    # 天津市的天气 API 编码
    }
    # 根据用户输入的城市名,查找对应的编码;若找不到则返回 None
    city_code = city_code_map.get(location)

    # 不支持的城市(如输入“上海”或空字符串)→ 返回空值结构
    if not city_code:
        # 记录警告日志:提示该城市暂不支持(可在 Coze 后台查看)
        args.logger.warning(f"Unsupported location: '{location}'")
        # 返回标准化的空结果(所有字段为 None),保证输出结构一致
        return {
            "high": None,       # 最高温度
            "low": None,        # 最低温度
            "weather": None,    # 天气类型(如“晴”)
            "week": None        # 星期(如“星期二”)
        }

    # === 3. 调用天气 API ===
    # 拼接完整 API 请求 URL,替换 {city_code} 为实际城市编码
    url = f"http://t.weather.itboy.net/api/weather/city/{city_code}" # 这是一个免费的天气查询API(网上搜的)
    
    try:
        # 发起 GET 请求,设置超时 5 秒(防止插件卡死)
        response = requests.get(url, timeout=5)
        # 若 HTTP 状态码非 2xx,主动抛出异常(如 404、500 等)
        response.raise_for_status()
        # 将响应体解析为 JSON 字典(安全方式,避免使用危险的 eval())
        data = response.json()

        # 检查 API 业务层返回状态码(该 API 约定 status=200 表示成功)
        if data.get("status") != 200:
            # 若业务状态异常(如城市编码错误),抛出自定义异常
            raise ValueError("Weather API returned non-200 status")

        # 从返回数据中提取「今日」天气预报(forecast 列表第 0 项即为当天)
        # 路径:data → forecast 数组 → 第 0 个元素
        forecast = data["data"]["forecast"][0]
        
        # 构造并返回天气基本信息字典
        return {
            "high": forecast["high"],     # 字符串,如 "高温 7℃"
            "low": forecast["low"],       # 字符串,如 "低温 -1℃"
            "weather": forecast["type"],  # 字符串,如 "晴"、"小雨"
            "week": forecast["week"]      # 字符串,如 "星期二"
        }

    # 捕获所有可能的异常(网络错误、JSON 解析失败、字段缺失等)
    except Exception as e:
        # 记录错误日志,包含具体异常信息和请求城市,便于调试
        args.logger.error(f"Weather query failed for '{location}': {e}")
        # 统一返回空值结构,确保插件健壮性(不会因异常导致 Agent 崩溃)
        return {
            "high": None,
            "low": None,
            "weather": None,
            "week": None
        }

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐