3 篇文章带有标签 “tool-calling”

Vercel AI SDK 架构设计分析

1. 项目概述

Vercel AI SDK 是一个与提供商无关的 TypeScript 工具包,旨在帮助开发者使用流行的 UI 框架(如 Next.js、React、Svelte、Vue、Angular)和运行时(如 Node.js)构建 AI 驱动的应用程序和智能体。

核心特性

  • 统一提供商架构:支持 OpenAI、Anthropic、Google 等多个模型提供商
  • 多框架支持:React、Svelte、Vue、Angular
  • 多种模型类型:文本生成、嵌入、图像、语音、转录、重排等
  • 智能体框架:ToolLoopAgent 等工具循环代理
  • 流式输出:支持实时流式响应

2. 整体架构

SmolAgents 概念指南:Agent 介绍

本文档探讨了人工智能代理(AI Agent)的概念,将其定义为LLM(大型语言模型)输出控制工作流程的程序代理能力是一个连续的谱系,取决于LLM对程序流程的控制程度,从简单的输出处理到控制迭代和启动其他代理。文中强调了在需要灵活工作流程时使用代理的优势,特别是多步代理通过循环推理和行动解决复杂任务的能力。此外,文档详细介绍了smolagents框架的必要性,它提供了管理工具调用、记忆和错误处理的抽象层,并提出代码代理是一种更具可组合性、通用性和在LLM训练数据中表现更好的代理实现方式。

🤔 什么是 Agent?

任何使用 AI 的高效系统都需要为大型语言模型(LLM)提供某种与现实世界交互的能力:例如,调用搜索工具以获取外部信息,或对某些程序执行操作以解决任务。换句话说,LLM 应该具有代理能力(agency)。Agent 程序是 LLM 通向外部世界的门户。

AI Agent 是LLM 输出控制工作流程的程序

任何利用 LLM 的系统都会将 LLM 的输出集成到代码中。LLM 的输入对代码工作流程的影响程度就是 LLM 在系统中的代理能力水平。

请注意,根据这个定义,“agent”不是一个离散的、非0即1的定义:相反,“代理能力”在一个连续的谱系上演变,这取决于您赋予 LLM 对工作流程的权力大小。

下表展示了代理能力在不同系统中的变化:

LangChain Chat Models Function & Tool Calling

Chat Models Functions & Tools

Model Function Calling Tool Calling Python Package
ChatOpenAI langchain-openai
ChatTongyi langchain-community
ChatOllama langchain-community
OllamaFunctions langchain-experimental

自定义工具

在构建自己的代理时,您需要为其提供一个工具列表,供其使用。除了实际调用的函数之外,工具还包括几个组件:

  • name (str):是必需的,并且在提供给代理的一组工具中必须是唯一的。
  • description (str):可选,但建议提供,因为代理使用它来确定工具的使用。
  • args_schema (Pydantic BaseModel):可选,但建议提供,可用于提供更多信息(例如,少量示例)或对预期参数进行验证。

定义 Function