跳转至

AI

MCP

定义了一种规范:工具的注册与使用,这个交互是mcp server与client的交互。 - 每个mcp server可能提供多个工具tool,提供工具描述和参数说明,让模型知道何时及如何使用此工具。 - 这是一份交互协议,安装mcp的时候client和server进行多轮交互,获取到工具列表以及传参类型。python的fastmcp框架做了这些工作,我们只需关注tool实现。 - 对话的时候,把所有工具带过去。如果需要,大模型会告诉客户端去调用哪个;客户端把调用结果在返给模型。但工具太多会占用太多token显然不合理,工程角度需要处理,可能先用小模型判断对话是否需要工具。

  • 通信方式三种
    • stdio适合本地工具,server需要本地启动,按需启用,和客户端一对一;类似一个bash命令就是一个server
    • sse,以及升级版Streamable HTTP;web服务,例如高德,stack推送服务等
  • 这里有个例子分别代理了mcp模型接口,可以看到agent与他们交互细节,视频
  • mcp除了tool,还有prompt,resources等类型,只是用的比较少

RAG(检索增强生成)

  • 常备用于做私有知识库。
  • 一开始可以把知识库全塞到上下文中,但显然知识库可以很大,会塞不下,浪费token,浪费注意力。所以需要先把相关的知识搜出来,然后塞到上下文,类似【联网】工具
  • 两个阶段
    • 数据准备阶段:数据提取——>文本分割——>向量化(embedding)——>数据入库
    • 应用阶段:用户提问——>数据检索(召回)——>(重排再筛选) ——> 注入Prompt——>LLM生成答案
  • embedding也是一种专有模型,在LLM热潮早很多。他把离散对象(词、句子、文档等)映射成向量,用向量距离表示语义相似度
  • 向量数据库可以存储向量,可以进行相似度搜索

Agent

  • 比喻:给聪明的大脑,加上手和脚,示例

    • 通过system prompt约定大模型严格按照输出格式,并把工具列表给他,把思考方式告诉他。
    • 客户端就可以解析返回值,来运行指定工具,结果问大模型,循环,直到大模型觉得结果满意【ReAct模式/思想,客户端和大模型交互协议】
    • 工具太多,经常使用小模型先问下相关工具有哪些,避免所有工具直接塞给模型,占用爱多上下文
      所有步骤请严格使用以下 XML 标签格式输出:
      - <question> 用户问题
      - <thought> 思考
      - <action> 采取的工具操作
      - <observation> 工具或环境返回的结果
      - <final_answer> 最终答案
      你首先会收到一个用户问题<question>,然后你需要讲问题拆解成多个步骤。
      每个步骤你首先要使用<thought>思考接下来的行动
      然后把需要调用的工具和参数放到<action>中
      然后你会收到工具调用的返回结果,放到<observation>中
      持续上述循环,直到你认为已经获得了足够的信息,并把你的最终答案放到<answer>中
      
  • 除了ReAct 还有Plan and exectute模式,先规划后执行

ReAct

三个词:思考,行动,观察(thought/action/observation) Reasoning and acting 姚顺雨论文

Token

  • Tokenizer = 预处理规则 + 词表(vocab) + 切分算法
    • 预处理规则,如空格规则,Unicode处理等
    • 切分算法,常见BPE(Byte Pair Encoding),Unigram
    • 词表是词对应tokenId,输入和输出大模型都是id
  • Tokenizer 不是词法分析,是基于统计频率的子词压缩算法
  • 经常出现的词合并成一个token,例如喜欢,是一个token。一句话,模型的输入会更少,训练和推理效率就会更高
  • BEP不光包括词表,还有merge规则,即merge 是有顺序的,不是贪心最长匹配。如【研究生命起源】,可能会把【研究生】切分,这取决于merge规则顺序,这个和词表大量预料得来的;

    • 如 GPT-2 tokenizer,词表约 50k,merge rules ~50k 条,推理时,字节切分,按 5万条 merge 规则逐步合并,时间复杂度非常低。
    • 而Unigram通过概率/DP选择一定程度可以避免这种歧义。Unigram 可能计算出:P(研究)*P(生命)*P(起源) > P(研究生)*P()*P(起源)
  • tokenizer 的目标其实不是“语言学正确”,tokenizer 的目标是稳定编码。token 数量尽量少token 越少:推理成本越低。因为 Transformer 复杂度:O(n²)。

  • LLM 并不依赖“正确分词”。即使 tokenizer 切成:研究生 / 命 / 起源;仍不影响训练。Transformer 会在更高层建模。

deepseek r1 的意义

以前很多人默认,最强 reasoning 模型这件事,只有少数美国闭源实验室能做,而且要靠巨额算力、海量人工标注、封闭数据和不透明配方。R1 之后,这个判断被冲击了。因为它同时证明了几件事: - 中国可以做出顶级的reasoning model,当时媲美o1。reasoning 训练范式的创新 - 开源:把关键成果以 open weights / MIT license 的方式放出来 - 成本:能在受限算力条件下把效率做到很高(当时16元/1M,后来8元,3元...)

说明:中国团队已经不只是跟随做 chatbot,而是在 reasoning 训练范式、开源影响力、成本效率这三个维度,能直接参与定义行业方向了。

所以当时有句话,中国也在AI的牌桌上了

function calling

一些模型/API 本身就具备“工具调用意图生成”的原生能力,不需要你再在提示词里手搓协议格式。
真正调用工具通常还是由外部程序执行;而且是否调用、何时调用、调用哪个,仍然会受提示词、工具描述、模型本身能力影响。