mcpField
F
Fast LLM & Agents & MCPs

Fast LLM & Agents & MCPs

本地服务
github.com/omerbsezerAI 与智能体926 周前更新

关于 Fast LLM & Agents & MCPs

这是一个学习资料仓库,包含 LLM、Agent、MCP 工具和 Skills 等概念的理论说明与示例代码,示例基于 LangChain & LangGraph、AWS Strands Agents 和 Google ADK。适合希望动手学习 Agent 开发的开发者。

主要功能

  1. 01LangChain 与 LangGraph 的 Agent 示例代码
  2. 02AWS Strands Agents 示例,包括 MCP 文件操作
  3. 03Google ADK 多 Agent 模式示例
  4. 04涵盖 RAG、微调和 LLM 基础概念

适用场景

  1. 01学习 Agent 的工具调用与记忆机制
  2. 02对比 LangGraph、Strands 与 ADK 的多 Agent 编排方式
  3. 03参考 MCP 工具接入 Agent 的示例代码

MCP 相关

仓库中包含连接本地与远程 MCP 工具的 Agent 示例,例如 AWS Strands 和 Google ADK 的 MCP 文件服务与搜索工具示例,但其本身不是 MCP 服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

快速了解 LLM、Agent 和 MCP

本仓库从理论和实践两方面介绍 LLM、Agent、MCP 工具和技能的概念:

  • LLM 架构、RAG、微调、Agent、工具、MCP、Agent 框架、参考文档。
  • 使用 LangChain & LangGraph(> v1.0.0,生产版本) 的 Agent 示例代码。
  • 使用 AWS Strands Agents 的 Agent 示例代码。
  • 使用 Google Agent Development Kit(ADK) 的 Agent 示例代码。

LangChain & LangGraph(v1.0.0)- Agent 示例代码与项目

AWS Strands - Agent 示例代码与项目

Google ADK - Agent 示例代码与项目

目录

动机

为什么要使用、学习或开发大模型和应用?

  • 🔍 自动化复杂任务: 大规模完成摘要、翻译、编码、研究和内容创作。
  • 🧠 打造智能应用: 通过自然语言界面构建聊天机器人、副驾驶、搜索引擎和数据探索工具。
  • 🚀 提高生产力: 通过处理重复性或基于知识的任务,为用户和企业节省时间。
  • 💰 市场需求旺盛: SaaS、企业工具、客户支持和教育领域对大模型应用的需求日益增长。
  • 🧩 灵活集成: 结合工具、API、数据库和 Agent,打造强大的工作流。
  • 🛠️ 针对边缘场景定制: 根据特定领域的需求(金融、法律、医疗等)进行微调或适配。
  • 📈 职业发展: 带来 AI 工程、MLOps、产品创新和技术领导等领域的职业机会。
  • 🌍 全球影响: 让信息和自动化更易于获取,尤其是对非技术用户而言。

大模型架构与大模型

  • 大模型(大型语言模型)是一种人工智能模型,通过海量文本数据训练,以理解和生成人类般的语言。
  • “大型”:指训练过程中使用的数十亿个参数和海量数据集。
  • “语言模型”:根据输入的上下文预测并生成文本。
  • 大模型基于 Transformer 架构 构建(使用自注意力理解上下文)。
  • 大模型是 仅解码器 Transformer。

大模型的核心组件:

  • 嵌入层: 将单词/词元转换为向量。
  • 位置编码: 添加词序信息。
  • 自注意力机制: 捕捉词元之间的关系。
  • 前馈层: 处理词元级信息。
  • 层归一化与残差连接: 稳定并提升训练效果。
  • 输出头: 预测下一个词元或分类结果。

使用大模型有两种方式:API(来自 AI 和云服务提供商)、本地

API(来自 AI 和云服务提供商)
本地
Ollama
HuggingFace
使用 vLLM 提供大模型服务
  • 下载开源模型后,如果要服务更多用户(>10),应使用服务引擎运行。
  • vLLM 是一个用于大模型推理和服务的快速易用库。
  • https://github.com/vllm-project/vllm

提示词工程

  • 提示词工程是设计和完善输入提示词,以便从大模型(大型语言模型)获得最佳响应的实践。
  • 编写清晰、具体的指令。
  • 使用结构化格式(例如列表、JSON、示例)。
  • 应用以下技巧:
    • 零样本提示(直接提问)
    • 少样本提示(提供示例)
    • 思维链提示(要求模型逐步解释)
  • 为什么这很重要?
    • 提升输出质量: 精心设计的提示词可引导大模型生成相关且准确的结果。
    • 提高模型准确性: 帮助大模型遵循复杂指令。明确的指令可减少错误或编造的信息。
    • 实现特定任务的性能: 只需编写完善的提示词,就能让模型总结、翻译、生成代码或遵循工作流。
    • 节省成本: 无需重新训练或微调大模型,就能改善结果。
    • 对生成式 AI 应用至关重要: 对构建聊天机器人、Agent、搜索助手和副驾驶至关重要。
    • 支持 RAG 和工具使用: 帮助在高级系统中协调大模型与工具、API 或知识库。

RAG:检索增强生成

RAG(检索增强生成)是一种将外部知识检索与基于大模型的文本生成相结合的技术。 工作原理:

  • 检索: 使用查询搜索知识库(例如文档、PDF、数据库)。通常使用基于嵌入的向量搜索(例如 FAISS、Elasticsearch)。
  • 增强: 将检索到的文本注入提示词。
  • 生成: 大模型利用此上下文生成更准确、有依据的回答。

RAG 的重要性:

  • 减少幻觉,让大模型的回答以真实数据为依据。
  • 保持回答的时效性(大模型无需为每次更新重新训练)。
  • 提高可信度和透明度(可以展示来源)。
  • 适用于企业级扩展: 用于聊天机器人、搜索、文档问答、Agent。

RAG 常用工具:

  • 嵌入模型
    • OpenAI(text-embedding-ada-002),
    • HuggingFace(all-MiniLM-L6-v2,sentence-transformers/all-mpnet-base-v2),
    • AWS Titan embeddings
  • 重排序模型
  • 生成模型
  • 向量存储与数据库:
    • FAISS,
    • Pinecone,
    • Weaviate,
    • Chroma,
    • Milvus,
    • Qdrant

微调

微调是指通过在规模较小、经过专门整理的数据集上进一步训练预训练大模型,使其适应特定任务或领域。其目标是在无需从头开始训练的情况下,让模型更好地满足特定要求。

微调的工作原理:

  • 从预训练模型开始: 选择一个经过海量通用数据(PDF)训练的大型模型(Llama3.3、Mistral),使其具备语言理解能力。
  • 使用领域专属数据: 提供一个与目标任务或领域相关的小型数据集(例如法律文本、医疗数据、客户服务)。
  • 训练模型: 使用这些新的专门数据更新模型参数,使其在目标领域表现更好,同时保留从更大的训练数据集中学到的通用知识。
  • 应用微调后的模型: 现在,模型能够基于专门领域生成或分类文本,其表现通常远高于通用模型。

微调为何重要:

  • 提高准确性: 模型在特定用例中的表现会更加精确,例如医疗文本分析或客户支持聊天机器人。
  • 节省时间和资源: 无需从头开始训练新模型(这需要海量计算资源和数据)。
  • 定制行为: 微调可让你调整模型的行为,使其符合应用目标(例如语气、上下文、风格)。

微调方法:

  • 全量微调: 针对特定任务,对预训练模型的所有参数进行微调。它能实现最大程度的定制,但消耗资源较多,且需要大型数据集。
  • 基于特征的微调: 仅对预训练模型的最后几层进行微调,其余部分保持冻结。与全量微调相比,这种方法更快、资源消耗更少,但可能无法达到同等程度的任务专项优化。
  • PFET(渐进式微调): 微调分阶段进行,从较简单的任务开始,逐步过渡到更复杂的任务。这种方法可以减少灾难性遗忘,并提升模型逐步学习复杂任务的能力,但耗时更长。
  • 适配器微调: 在预训练模型中加入小型可训练层(适配器),并仅对这些适配器进行微调。这种方法在多任务学习中效率很高,但灵活性不如全量微调,且可能并非适用于所有任务。
  • LoRA(低秩适配): 在预训练模型的特定层中加入低秩矩阵,并仅对这些矩阵进行微调。这种方法在内存和计算方面效率很高,适合大型模型,但对非常复杂的任务可能效果不佳。
  • QLoRA(量化 LoRA): 将 LoRA 与量化技术结合,进一步缩小模型体积并降低其内存需求。低秩矩阵经过量化后,内存效率更高。

大模型应用框架与库

大模型(LLM)应用框架与库是用于简化由 GPT、Claude、Gemini 或 LLaMA 等大模型驱动的应用开发、编排和部署的工具。这些工具提供了抽象层,用于管理提示词、记忆、Agent、工具、工作流,以及与外部数据或系统的集成。

LangChain 与 LangGraph
  • LangChain 是一个用于构建大模型应用的框架,可将模型与工具、提示词、记忆和数据源结合起来。LangGraph 是 LangChain 的扩展,它将大模型工作流建模为有状态的图,从而更便于构建带有循环和控制流的多步骤或多 Agent 系统。
  • https://python.langchain.com/docs/introduction/
LlamaIndex
  • LlamaIndex 是一个框架,可帮助将大模型(如 OpenAI GPT)连接到 PDF、数据库或 API 等外部数据源。它专注于数据摄取、索引和检索,使 LLM 应用(例如 RAG 系统)能够高效查询私有或结构化数据。
  • https://developers.llamaindex.ai/python/framework/

Agent 框架

Agent 框架是专门用于构建、管理和编排基于 LLM 的 Agent 的软件工具或库。这些框架可帮助你创建智能 Agent,使其能够自主推理、规划,并使用外部工具或与其他 Agent 协同采取行动。

Agent 框架提供哪些功能?

  • Agent 抽象: 定义 Agent 的身份、目标、记忆、行为和权限。
  • 工具接口: 注册 Agent 可使用的外部工具(API、函数、数据库等)。
  • 执行逻辑: 处理规划、决策、工具调用、重试和反馈循环。
  • 多 Agent 编排: 管理多个 Agent 之间的通信和任务委派。
  • 记忆与上下文: 支持持久记忆、历史记录跟踪和上下文推理。
  • 可观测性: 提供追踪、日志记录和逐步推理输出,以便调试。
LangChain & LangGraph
  • LangChain & LangGraph 也提供强大的 Agent 框架。LangChain 提供强大的 Agent 框架,使 LLM 能够动态决定使用哪些工具、API 或操作来完成任务。LangGraph 则通过基于图的执行模型支持有状态的多 Agent 工作流和复杂控制流(循环、分支),进一步扩展了这一能力。
  • https://python.langchain.com/docs/introduction/
AWS Strands
Google Agent Development Kit
  • Agent Development Kit(ADK)是一个灵活、模块化的框架,用于开发和部署 AI Agent。虽然它针对 Gemini 和 Google 生态系统进行了优化,但 ADK 不依赖特定模型或部署方式,并且兼容其他框架。
  • ADK 旨在让 Agent 开发更接近软件开发,使开发者能够更轻松地创建、部署和编排从简单任务到复杂工作流的 Agent 架构。
  • https://google.github.io/adk-docs/
CrewAI

CrewAI 是一个完全从头构建的 Python 框架,完全独立于 LangChain 或其他 Agent 框架。CrewAI 兼具简洁的高级操作和精确的底层控制,适合创建能够适应各种场景的自主 AI Agent:

  • CrewAI Crews: 专注于自主性和协作智能,让你能够创建 AI 团队,其中每个 Agent 都有特定的角色、工具和目标。
  • CrewAI Flows: 支持精细的事件驱动控制,通过单次 LLM 调用实现精准的任务编排,并原生支持 Crews。
  • https://docs.crewai.com/introduction
PydanticAI
  • PydanticAI 是一个 Python Agent 框架,旨在降低使用生成式 AI 构建生产级应用的难度。 https://ai.pydantic.dev/

Agent

大模型 Agent 是一种自主或半自主系统,它使用大语言模型(如 GPT、Claude 或 Gemini)进行推理、决策,并借助外部工具或 API 采取行动以实现目标。

大模型 Agent 通常包括:

  • 大模型核心: 负责理解任务并生成推理过程的“大脑”。
  • 记忆(可选): 存储操作、输入和输出的历史记录,以支持上下文感知行为。
  • 工具: Agent 可调用的外部 API、数据库、网络搜索、代码执行功能或自定义函数。
  • 环境: Agent 运行所依托的运行时或框架(例如 LangChain、CrewAI、Google ADK)。
# Define a tool function
def get_capital_city(country: str) -> str:
  """Retrieves the capital city for a given country."""
  # Replace with actual logic (e.g., API call, database lookup)
  capitals = {"france": "Paris", "japan": "Tokyo", "canada": "Ottawa"}
  return capitals.get(country.lower(), f"Sorry, I don't know the capital of {country}.")

# Add the tool to the agent
capital_agent = LlmAgent(
    model="gemini-3.0-pro",
    name="capital_agent",
    description="Answers user questions about the capital city of a given country.",
    instruction="""You are an agent that provides the capital city of a country... (previous instruction text)""",
    tools=[get_capital_city]
)
工具

工具代表 AI Agent 的一项特定能力,使其能够执行操作,并与自身文本生成和推理能力之外的世界交互。

  • 函数工具: 将函数转换为工具,是将自定义逻辑集成到 Agent 中的简单方法。
  • Agent-as-Tool: 这项强大的功能允许你通过将其他 Agent 作为工具调用,在系统中利用它们的能力。Agent-as-a-Tool 可让你调用另一个 Agent 执行特定任务,从而有效地委派职责。
  • Google ADK 内置工具: 这些内置工具提供开箱即用的功能,例如 Google 搜索或代码执行器,为 Agent 提供常用能力。
  • Langchain 工具: 也作为 Langchain 工具用于 Google ADK。
  • CrewAI 工具: 也作为 CrewAI 工具用于 Google ADK。
  • MCP 工具: 将 MCP 服务应用连接到 MCP 客户端(Claude App、VSCode 等)或 Agent(Google ADK)。
MCP:模型上下文协议
  • 模型上下文协议(MCP)是一项开放标准,旨在规范 Gemini 和 Claude 等大模型与外部应用、数据源和工具的通信方式。
  • MCP 采用客户端-服务端架构,定义 MCP 服务如何提供数据(资源)、交互式模板(提示词)和可执行功能(工具),以及 MCP 客户端(可以是大模型宿主应用或 AI Agent)如何使用它们。
  • https://www.anthropic.com/engineering/building-effective-agents
Agent 技能
  • Agent 技能是 AI Agent 可调用的预定义能力或工具,用于完成任务(例如运行代码、查询数据库或阅读文档)。它们通常打包为可复用的单元,其中包含指令、脚本和辅助文件,以便 Agent 知道何时以及如何使用它们。在许多框架中,技能可以包含用于执行的脚本(Python/JS)以及描述使用说明的 Markdown 文件。这使 Agent 无需更改核心 Agent 逻辑即可扩展功能。

技能结构示例:

skills/
 └─ query_parquet/
     ├─ skill.md
     └─ run_query.py

skill.md:

# Query Parquet Skill
Use this skill when you need to run SQL queries on Parquet files.

Input:
- SQL query

Output:
- Query results as a table

run_query.py:

import duckdb

def run_query(sql, file_path):
    con = duckdb.connect()
    return con.execute(f"SELECT * FROM read_parquet('{file_path}') WHERE {sql}").fetchall()
A2A:Agent 到 Agent 协议

Agent2Agent(A2A)协议有助于独立 AI Agent 之间进行通信。以下是核心概念:

  • Agent Card: 一个公开的元数据文件(通常位于 /.well-known/agent.json),用于描述 Agent 的能力、技能、端点 URL 和身份验证要求。客户端使用它来发现 Agent。
  • A2A 服务端: 一个公开 HTTP 端点并实现 A2A 协议方法(在 json 规范中定义)的 Agent。它接收请求并管理任务执行。
  • A2A 客户端: 使用 A2A 服务的应用程序或其他 Agent。它向 A2A 服务端的 URL 发送请求(例如 tasks/send)。
  • 任务: 工作的核心单位。客户端通过发送消息(tasks/send 或 tasks/sendSubscribe)来启动任务。任务具有唯一 ID,并会经历不同状态(submitted、working、input-required、completed、failed、canceled)。
  • 消息: 表示客户端(角色:“user”)与 Agent(角色:“agent”)之间的通信轮次。消息包含 Part。
  • Part: Message 或 Artifact 中的基本内容单位。可以是 TextPart、FilePart(包含内联字节或 URI),也可以是 DataPart(用于结构化 JSON,例如表单)。
  • Artifact: 表示 Agent 在任务期间生成的输出(例如生成的文件、最终结构化数据)。Artifact 也包含 Part。
  • 流式传输: 对于长时间运行的任务,支持流式传输功能的服务端可以使用 tasks/sendSubscribe。客户端会接收包含 TaskStatusUpdateEvent 或 TaskArtifactUpdateEvent 消息的服务器发送事件(SSE),以实时获取进度。
  • 推送通知: 支持 pushNotifications 的服务端可以主动向客户端提供的 webhook URL 发送任务更新,该 URL 通过 tasks/pushNotification/set 进行配置。
  • 链接: https://github.com/google/A2A

与大模型、Agent、MCP 相关的其他实用资源

参考资料

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。