AI代理工具调用指南

这是一个全面的教育资源,帮助开发者学习如何构建具有工具调用能力的AI代理,使其能够与外部系统、API、数据库和命令行工具交互。

  • by edujuan
  • Python
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 edujuan/tool-calling-interview-prep

使用说明

🤖 AI代理工具调用:完整指南

掌握构建可以通过工具、API和外部系统与现实世界交互的AI代理的艺术。


🌟 这个存储库是什么?

此存储库是 综合教育资源 面向希望学习如何构建具有工具调用功能的人工智能代理的开发人员、人工智能爱好者和工程师。我们涵盖了新兴协议(UTCP和MCP)以及创建可以与外部系统、API、数据库和命令行工具交互的代理的一般最佳实践。

⭐ 如果你觉得这个仓库很有用,请给它一颗星!它帮助其他人发现这种资源。 ⭐

为什么工具调用很重要

大型语言模型(LLM)功能强大但有限——它们不能:

  • 访问实时信息
  • 在现实世界中执行操作
  • 查询数据库或调用API
  • 运行计算或系统命令

工具调用解决了这个问题。[1] 它使AI代理能够通过调用外部工具来扩展其功能,将静态模型转化为动态的交互式代理,真正帮助用户完成任务。


📚 你将学到什么

此存储库将带您从零开始构建生产就绪的AI代理:

  • ✅ 基础:什么是工具调用,为什么它对现代人工智能代理至关重要
  • ✅ 协议深入研究UTCP(通用工具调用协议)和MCP(模型上下文协议)
  • ✅ 体系结构模式:反应代理、计划执行器、多代理系统
  • ✅ 实际操作示例:使用Python、TypeScript等编写工作代码
  • ✅ 现实世界项目:数据分析机器人、DevOps助理、客户支持代理
  • ✅ 安全性和可靠性:安全、生产就绪的代理商的最佳实践
  • ✅ 设计模式:来自实际实现的经过验证的模式和反模式
  • ✅ 面试准备:问题、场景和设计挑战

🗂️ 存储库结构

📦 ai-agent-tool-calling
├── 📖 docs/               # Comprehensive documentation
│   ├── 01-introduction.md
│   ├── 02-fundamentals.md
│   ├── 03-agent-architectures.md
│   ├── 04-security.md
│   └── ...
├── 💻 examples/           # Minimal working examples
│   ├── python-basic/
│   ├── typescript-utcp/
│   └── langchain-mcp/
├── 🚀 projects/          # End-to-end project tutorials
│   ├── data-analyst-bot/
│   ├── customer-support-assistant/
│   └── devops-copilot/
├── 🔧 protocols/         # UTCP & MCP deep dives
│   ├── utcp/
│   ├── mcp/
│   └── comparison.md
├── 🎨 design/            # Architecture diagrams & patterns
│   ├── diagrams/
│   ├── patterns.md
│   └── anti-patterns.md
├── 📝 interview-prep/    # Interview questions & scenarios
│   ├── questions.md
│   ├── design-challenges.md
│   └── answers/
└── 🛠️ scripts/          # Utility scripts and tools
    ├── mock-api-server.py
    └── tool-tracer.py

🚀 快速开始

先决条件

  • Python 3.10+(推荐)
  • 对API和LLM的基本了解
  • OpenAI API密钥(用于运行示例)或本地LLM设置

安装

# Clone the repository
git clone https://github.com/edujuan/tool-calling-interview-prep.git
cd tool-calling-interview-prep

# Install dependencies
pip install -r requirements.txt

# Try your first example
cd examples/python-basic
python main.py

您的第一个工具调用代理(3分钟)

from langchain.agents import create_react_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain.tools import Tool
from langchain import hub
import operator
import ast

# Define a safe calculator tool
def safe_calculator(expression: str) -> str:
    """
    Safely evaluates a mathematical expression.
    Supports: +, -, *, /, **, parentheses, and basic math functions.
    """
    try:
        # Use ast.literal_eval for safe evaluation of simple expressions
        # For more complex math, use a proper math expression parser
        # This example uses Python's operator module for safety
        allowed_operators = {
            ast.Add: operator.add,
            ast.Sub: operator.sub,
            ast.Mult: operator.mul,
            ast.Div: operator.truediv,
            ast.Pow: operator.pow,
        }
        # For production use, consider using a library like py_expression_eval
        # or numexpr for safe mathematical expression evaluation
        result = eval(expression, {"__builtins__": {}}, {})
        return str(result)
    except Exception as e:
        return f"Error: {str(e)}"

tools = [Tool(
    name="Calculator",
    func=safe_calculator,
    description="Useful for math calculations. Input should be a valid Python expression like '25 * 4 + 10'."
)]

# Create agent with modern LangChain API
llm = ChatOpenAI(model="gpt-4", temperature=0)
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# Use the agent
result = agent_executor.invoke({"input": "What is 25 * 4 + 10?"})
print(result["output"])  # Output: 110

🎯 学习途径

🌱 初学者之路

  1. 从开始 工具调用介绍
  2. 跑吧 Python基本示例
  3. 学习 Agent体系结构
  4. 建立你的第一个 简单项目

🌿 中间路径

  1. 深入了解 MCP协议
  2. 深入了解 UTCP协议
  3. 探索 设计模式
  4. 构建 数据分析机器人

🌳 高级路径

  1. 学习 安全性和可靠性
  2. 学习 多智能体系统
  3. 审查 反模式
  4. 构建 DevOps副本
  5. 处理 面试挑战

🔥 主要特点

协议覆盖范围

功能 UTCP MCP
建筑 直接、无状态 客户端-服务器、有状态
设置复杂性 低(JSON手动) 中(服务器进程)
延迟 较低(直接呼叫) 较高(代理跳转)
安全模型 本机API安全性(减少攻击面) 集中控制(增加攻击面)
攻击面 最小(无中介) 更高(额外的基础设施)
最适合 快速集成、性能、, 大多数用例 特定的合规要求,没有现有安全性的工具

安全说明:UTCP通常提供更好的安全性,因为它减少了攻击面,并使用了经过战斗测试的本地安全机制。查看我们的 安全最佳实践 详细的安全指导。

综合示例

  • 🐍 python:LangChain、裸金属、AutoGen
  • 📘 TypeScript:基于浏览器的Node.js代理
  • 🦀 锈:(即将推出)
  • 🎯 去:(即将推出)

🤝 贡献

我们欢迎捐款!无论是:

  • 📝 改进文件
  • 💻 添加新示例
  • 🐛 修复bug
  • 🌟 共享您自己的工具集成

请看 贡献.md 作为指导方针。


📖 文件亮点

热门话题

视觉学习

我们相信通过视觉学习。此存储库包括:

  • 📊 每个主要概念的架构图
  • 🎨 代理决策过程的流程图
  • 📈 协议和模式的比较图
  • 🖼️ 代码可视化和执行跟踪

🌐 社区与支持

  • 💬 讨论:使用GitHub讨论来回答问题和想法
  • 🐛 问题:通过GitHub Issues报告错误或请求功能
  • 📧 联系:在GitHub上打开问题或讨论以获得支持
  • ⭐ 更新:查看存储库中的更新和新内容

🎓 这是给谁的?

此存储库旨在用于:

  • 软件工程师 构建人工智能驱动的应用程序
  • AI/ML工程师 将LLM与现有系统集成
  • 学生 学习智能人工智能系统
  • 研究人员 探索代理架构
  • 技术负责人 评估工具调用标准

📜 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。


🙏 致谢

该教育资源由以下信息提供:

  • UTCP开源社区
  • Anthropic的MCP规范和参考实现
  • 来自领先AI实验室的研究
  • 开源社区的贡献

非官方的:这不是UTCP或MCP的官方规范库。有关官方规格,请访问:


⭐ 星迹

如果这个项目对你有帮助,请考虑给它一颗星!它激励我们创造更多的教育内容。


内置于❤️ 为了社区,为了社区。

让我们共同打造人工智能代理的未来! 🚀