返回市场
工具调用面试准备

工具调用面试准备

作者:edujuan7 星标更新:2025-11-23

项目介绍

🤖 AI Agent 工具调用:完全指南

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

License: MIT PRs Welcome


🌟 这个仓库是什么?

这个仓库是一个全面的教育资源,面向希望学习如何构建具有工具调用能力的AI代理的开发者、AI爱好者和工程师。我们涵盖了新兴协议(UTCP & MCP)以及创建能够与外部系统、API、数据库和命令行工具互动的代理的一般最佳实践。

⭐ 如果您发现这个仓库有用,请给它一个星!这有助于其他人发现这个资源。⭐

为什么工具调用很重要

大型语言模型(LLMs)虽然强大但有限——它们不能:

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

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


📚 您将学到什么

本仓库将引导您从零开始构建生产就绪的AI代理:

  • 基础:什么是工具调用以及为什么它对现代AI代理至关重要
  • 协议:深入探讨UTCP(通用工具调用协议)和MCP(模型上下文协议)
  • 架构模式:反应式代理、规划者-执行者、多代理系统
  • 动手示例:Python、TypeScript等的工作代码
  • 实际项目:数据分析师机器人、DevOps助手、客户服务代理
  • 安全性和可靠性:创建安全、生产就绪代理的最佳实践
  • 设计模式:来自真实实现的经过验证的模式和反模式
  • 面试准备:问题、场景和设计挑战

🗂️ 仓库结构

📦 ai-agent-tool-calling
├── 📖 docs/               # 全面文档
│   ├── 01-introduction.md
│   ├── 02-fundamentals.md
│   ├── 03-agent-architectures.md
│   ├──  04-security.md
│   └── ...
├── 💻 examples/           # 最小工作示例
│   ├── python-basic/
│   ├── typescript-utcp/
│   └── langchain-mcp/
├── 🚀 projects/          # 端到端项目教程
│   ├── data-analyst-bot/
│   ├── customer-support-assistant/
│   └── devops-copilot/
├── 🔧 protocols/         # UTCP & MCP 深入探讨
│   ├── utcp/
│   ├── mcp/
│   └── comparison.md
├── 🎨 design/            # 架构图和模式
│   ├── diagrams/
│   ├── patterns.md
│   └── anti-patterns.md
├── 📝 interview-prep/    # 面试问题和场景
│   ├── questions.md
│   ├── design-challenges.md
│   └── answers/
└── 🛠️ scripts/          # 实用脚本和工具
    ├── mock-api-server.py
    └── tool-tracer.py

🚀 快速开始

前提条件

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

安装

# 克隆仓库
git clone https://github.com/edujuan/tool-calling-interview-prep.git
cd tool-calling-interview-prep

# 安装依赖
pip install -r requirements.txt

# 尝试第一个示例
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

# 定义一个安全计算器工具
def safe_calculator(expression: str) -> str:
    """
    安全地评估数学表达式。
    支持:+,-,*,/,**,括号和基本数学函数。
    """
    try:
        # 使用ast.literal_eval安全评估简单表达式
        # 对于更复杂的数学,使用适当的数学表达式解析器
        # 此示例使用Python的operator模块进行安全性
        allowed_operators = {
            ast.Add: operator.add,
            ast.Sub: operator.sub,
            ast.Mult: operator.mul,
            ast.Div: operator.truediv,
            ast.Pow: operator.pow,
        }
        # 对于生产用途,考虑使用py_expression_eval库
        # 或numexpr进行安全的数学表达式评估
        result = eval(expression, {"__builtins__": {}}, {})
        return str(result)
    except Exception as e:
        return f"错误: {str(e)}"

tools = [Tool(
    name="计算器",
    func=safe_calculator,
    description="用于数学计算。输入应为有效的Python表达式,如'25 * 4 + 10'。",
)]

# 使用现代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)

# 使用代理
result = agent_executor.invoke({"input": "25 * 4 + 10是多少?"})
print(result["output"])  # 输出:110

🎯 学习路径

🌱 初学者路径

  1. 工具调用简介开始
  2. 运行基本Python示例
  3. 学习代理架构
  4. 构建您的第一个简单项目

🌿 中级路径

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

🌳 高级路径

  1. 学习安全性和可靠性
  2. 学习多代理系统
  3. 审查反模式
  4. 构建DevOps副驾
  5. 应对面试挑战

🔥 关键特性

协议覆盖

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

安全提示:由于减少了攻击面并使用了经过实战检验的本机安全机制,UTCP通常提供更好的安全性。请参阅我们的安全最佳实践以获取详细的指导。

全面示例

  • 🐍 Python:LangChain,裸金属,AutoGen
  • 📘 TypeScript:Node.js代理,基于浏览器
  • 🦀 Rust:(即将推出)
  • 🎯 Go:(即将推出)

🤝 贡献

我们欢迎贡献!无论是:

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

请参阅CONTRIBUTING.md以获取指南。


📖 文档亮点

流行主题

视觉学习

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

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

🌐 社区和支持

  • 💬 讨论:使用GitHub讨论提出问题和想法
  • 🐛 问题:通过GitHub问题报告错误或请求功能
  • 📧 联系:在GitHub上打开问题或讨论以获得支持
  • 更新:关注仓库以获取更新和新内容

🎓 这是为谁准备的?

此仓库专为以下人员设计:

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

📜 许可证

本项目根据MIT许可证发布 - 详情见LICENSE文件。


🙏 致谢

此教育资源由以下方面启发:

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

非官方:这不是UTCP或MCP的官方规范仓库。要查看官方规范,请访问:


⭐ 星标历史

如果这个项目帮到了您,请考虑给它一个星!这激励我们创造更多的教育资源。


由社区为社区打造。

让我们一起构建AI代理的未来! 🚀