1. 引言

agentc-core 是一个面向 Python 智能体(Agent)开发的核心工具包,专注于为 AI Agent 提供标准化的工具调用、上下文管理和执行链路追踪能力。随着大语言模型(LLM)应用从简单对话走向复杂任务编排,agentc-core 应运而生,帮助开发者以更少的样板代码构建可维护、可观测的 Agent 系统。

本文将系统介绍 agentc-core 的核心功能、安装方式、语法参数,并通过 8 个实际案例展示其典型用法,最后总结常见错误与使用注意事项。

2. 核心功能

agentc-core 主要提供以下能力:

  • 工具注册与发现:通过装饰器或配置文件将 Python 函数注册为 Agent 可调用的工具,支持参数校验和自动文档生成。
  • 上下文管理:维护对话历史、状态变量和临时缓存,支持多轮交互中的上下文传递。
  • 执行链路追踪:记录每次工具调用的输入、输出、耗时和错误信息,便于调试和性能分析。
  • 安全沙箱:对工具执行结果进行过滤和校验,防止敏感信息泄露或异常数据污染上下文。
  • 多模型适配:提供统一的接口层,可对接 OpenAI、Anthropic、本地模型等多种 LLM 后端。

3. 安装

agentc-core 可通过 pip 直接安装:

pip install agentc-core

如需安装包含所有可选依赖的完整版本:

pip install agentc-core[all]

可选依赖包括:

  • [openai]:OpenAI API 支持
  • [anthropic]:Anthropic Claude 支持
  • [local]:本地模型(如 llama.cpp)支持
  • [tracing]:链路追踪(OpenTelemetry)支持

安装完成后,可通过以下命令验证:

import agentc_core
print(agentc_core.__version__)

4. 语法与参数

4.1 工具注册

使用 @tool 装饰器将函数注册为 Agent 工具:

from agentc_core import tool

@tool(name="get_weather", description="获取指定城市的天气信息")
def get_weather(city: str, unit: str = "celsius") -> dict:
    """查询天气的示例工具。"""
    # 实际实现中可调用天气 API
    return {"city": city, "temperature": 25, "unit": unit}

参数说明:

  • name:工具名称,Agent 调用时使用的标识符。
  • description:工具描述,LLM 根据此描述决定是否调用该工具。
  • 函数参数的类型注解会被自动解析为 JSON Schema,用于参数校验。

4.2 Agent 初始化

from agentc_core import Agent

agent = Agent(
    model="gpt-4o",
    tools=[get_weather],
    system_prompt="你是一个天气助手,使用工具查询天气信息。",
    max_turns=10,
    temperature=0.7,
)

关键参数:

  • model:LLM 模型名称或模型实例。
  • tools:注册的工具列表。
  • system_prompt:系统提示词。
  • max_turns:最大交互轮数,防止无限循环。
  • temperature:生成温度,控制随机性。

4.3 执行对话

response = agent.run("北京今天天气怎么样?")
print(response)

5. 8 个实际应用案例

案例 1:天气查询助手

构建一个支持多城市天气查询的 Agent,自动调用天气 API 并返回格式化结果。

from agentc_core import tool, Agent

@tool(name="get_weather", description="获取城市天气")
def get_weather(city: str) -> str:
    data = {"北京": "晴 25°C", "上海": "多云 28°C", "广州": "阵雨 30°C"}
    return data.get(city, "暂无数据")

agent = Agent(model="gpt-4o", tools=[get_weather])
print(agent.run("北京和上海的天气分别是什么?"))

案例 2:数据库查询助手

Agent 根据用户自然语言问题,生成 SQL 并查询数据库返回结果。

@tool(name="query_database", description="执行 SQL 查询")
def query_database(sql: str) -> list:
    # 实际项目中连接真实数据库
    return [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]

agent = Agent(model="gpt-4o", tools=[query_database])
print(agent.run("查询所有用户的名字和年龄"))

案例 3:文件处理助手

Agent 读取、分析和总结文件内容。

@tool(name="read_file", description="读取文件内容")
def read_file(path: str) -> str:
    with open(path, "r", encoding="utf-8") as f:
        return f.read()

agent = Agent(model="gpt-4o", tools=[read_file])
print(agent.run("读取 report.txt 并总结主要内容"))

案例 4:计算器工具

注册数学计算工具,让 Agent 处理复杂运算。

@tool(name="calculate", description="执行数学计算")
def calculate(expression: str) -> float:
    return eval(expression)  # 注意:生产环境应使用安全 eval

agent = Agent(model="gpt-4o", tools=[calculate])
print(agent.run("计算 (15 + 27) * 3 的结果"))

案例 5:邮件发送助手

Agent 根据用户指令发送邮件。

@tool(name="send_email", description="发送邮件")
def send_email(to: str, subject: str, body: str) -> str:
    # 实际调用邮件 API
    return f"邮件已发送至 {to}"

agent = Agent(model="gpt-4o", tools=[send_email])
print(agent.run("给 admin@example.com 发送一封主题为'测试'的邮件,内容为'Hello'"))

案例 6:多工具协作——旅行规划

Agent 同时调用天气查询、航班查询和酒店查询工具,完成旅行规划。

@tool(name="search_flights", description="查询航班")
def search_flights(departure: str, arrival: str, date: str) -> list:
    return [{"flight": "CA1234", "time": "08:00"}]

@tool(name="search_hotels", description="查询酒店")
def search_hotels(city: str) -> list:
    return [{"hotel": "希尔顿", "price": 800}]

agent = Agent(model="gpt-4o", tools=[get_weather, search_flights, search_hotels])
print(agent.run("帮我规划下周三从北京到上海的旅行,包括天气、航班和酒店"))

案例 7:带上下文的客服机器人

Agent 在对话中维护用户信息和历史记录。

@tool(name="get_user_info", description="获取用户信息")
def get_user_info(user_id: str) -> dict:
    return {"name": "张三", "level": "VIP"}

agent = Agent(
    model="gpt-4o",
    tools=[get_user_info],
    system_prompt="你是客服助手,根据用户信息提供个性化服务。"
)
print(agent.run("用户 ID 是 1001,查询他的信息并推荐适合 VIP 的活动"))

案例 8:代码生成与执行

Agent 生成 Python 代码并执行返回结果。

@tool(name="execute_python", description="执行 Python 代码")
def execute_python(code: str) -> str:
    local_vars = {}
    exec(code, {}, local_vars)
    return str(local_vars.get("result", "无返回值"))

agent = Agent(model="gpt-4o", tools=[execute_python])
print(agent.run("写一段 Python 代码计算斐波那契数列前 10 项,并返回结果"))

6. 常见错误与使用注意事项

6.1 常见错误

  • 工具注册失败:未正确使用 @tool 装饰器或函数参数缺少类型注解,导致 Agent 无法识别工具。
  • 参数类型不匹配:LLM 生成的参数类型与工具函数定义不一致,引发校验错误。
  • 无限循环:未设置 max_turns 或设置过大,Agent 在工具调用和 LLM 回复之间陷入死循环。
  • 上下文溢出:多轮对话中累积的上下文超出 LLM 的 token 限制,导致截断或错误。
  • 工具执行超时:工具函数执行时间过长,阻塞 Agent 响应。

6.2 使用注意事项

  • 工具描述要清晰:LLM 依赖 description 决定是否调用工具,描述应准确反映工具的功能和适用场景。
  • 参数校验:在工具函数内部对输入参数进行二次校验,防止异常数据导致崩溃。
  • 安全沙箱:对于执行代码或访问文件系统的工具,务必添加安全限制,避免注入攻击。
  • 日志与监控:启用链路追踪功能,记录每次工具调用的详细日志,便于排查问题。
  • 版本兼容:注意 agentc-core 与 LLM SDK 的版本兼容性,升级前查阅官方 changelog。
  • 测试覆盖:为每个工具编写单元测试,确保在 Agent 调用时行为符合预期。

7. 总结

agentc-core 为 Python Agent 开发提供了简洁而强大的基础设施,从工具注册、上下文管理到链路追踪一应俱全。通过本文介绍的 8 个案例,可以看到它在天气查询、数据库操作、文件处理、计算、邮件发送、旅行规划、客服和代码生成等场景中的灵活应用。在实际项目中,建议结合业务需求合理设计工具粒度,并做好安全与监控措施,以充分发挥 agentc-core 的潜力。

 

《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章,前6章涵盖深度学习基础,包括张量运算、神经网络原理、数据预处理及卷积神经网络等;后5章进阶探讨图像、文本、音频建模技术,并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法,每章附有动手练习题,帮助读者巩固实战能力。内容兼顾数学原理与工程实现,适配PyTorch框架最新技术发展趋势。

 

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐