惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

PCI Perspectives
PCI Perspectives
Microsoft Security Blog
Microsoft Security Blog
MongoDB | Blog
MongoDB | Blog
T
The Blog of Author Tim Ferriss
罗磊的独立博客
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
Recorded Future
Recorded Future
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
Recent Announcements
Recent Announcements
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Apple Machine Learning Research
Apple Machine Learning Research
T
Threatpost
The GitHub Blog
The GitHub Blog
M
MIT News - Artificial intelligence
Scott Helme
Scott Helme
P
Palo Alto Networks Blog
T
Tenable Blog
P
Privacy International News Feed
V
Visual Studio Blog
F
Fortinet All Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
I
Intezer
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
AI
AI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Security Affairs
S
SegmentFault 最新的问题
C
Cisco Blogs
博客园 - 聂微东
MyScale Blog
MyScale Blog
V
Vulnerabilities – Threatpost
量子位
T
The Exploit Database - CXSecurity.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Security Latest
Security Latest
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Troy Hunt's Blog
T
Tailwind CSS Blog
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
A
About on SuperTechFans
The Last Watchdog
The Last Watchdog

博客园 - 大卫小东(Sheldon)

Rust 推荐使用宏而非普通函数的场景 华为公司发布半导体演进新范式 - “韬(τ)定律”(Tau Law) 霍尔定理和最大流算法 入门 Rudist v0.5.1 发布:AI 驱动的 Redis 客户端,更快、更直观 Rudist 0.4.3 发布:让 AI Agent 替你操作 Redis 集成AI 的 Redis 客户端 Rudist发布新版了 在Mac安装阿里巴巴新神器copaw GIM 2.0 发布:真正让 AI 提交消息可定制、可控、可项目级优化 postgreSQL 中的自定义操作符 SQL查询中的窗口函数(主要以 PostgreSQL 为例) SQL中的CTE用法初步(Common Table Expression公共表表达式) 公司新来的00后老板让我们把数据库改成PostgreSQL,大家怒了😂 革命你的 Git 提交消息 - GIM 1.8.0 发布了! 使用JMH对远程接口进行压测 如何用Java25编译Java17的项目 写了一个BBP算法的实现库,欢迎讨论 智能生成git提交消息工具 GIM 发布 1.7 版本了 面向 Git 用户的 jujutsu 使用入门 GIM 1.5发布了! 支持Windows系统了 GIM 1.4 发布了 (附使用 mkdocs 快速制作静态站点流程)
大模型智能体 (agent)简易流程介绍
大卫小东(Sheldon) · 2026-03-24 · via 博客园 - 大卫小东(Sheldon)

下面是一个使用 Rig 构建的简单 Agent 示例。它定义了一个计算工具,并让 Agent 自主决定是否调用它。

为什么不用langChain? 这个问题放到最后说

1 核心代码示例

Cargo.toml 中,只需要 rig-coretokio

use rig::{completion::Prompt, providers::openai};
use serde::{Deserialize, Serialize};

// 1. 定义工具的输入参数(强类型,类似 Java 的 DTO)
#[derive(Deserialize, Serialize, JsonSchema)]
struct AddArgs {
    x: i32,
    y: i32,
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::pub_error::Error>> {
    // 2. 初始化客户端 (这里以 OpenAI 为例,也支持 Gemini/Claude)
    let client = openai::Client::from_env();

    // 3. 定义一个工具 (Tool)
    // 在 Rust 里,工具就是一个带有元数据的函数
    let add_tool = rig::tool::Tool::new(
        "add",
        "Adds two numbers together",
        |args: AddArgs| async move {
            Ok(args.x + args.y)
        },
    );

    // 4. 构建 Agent (典型的 Builder 模式)
    let agent = client
        .agent("gpt-4o")
        .preamble("你是一个精通数学的助手。")
        .tool(add_tool) // 注册工具
        .build();

    // 5. 提示并运行
    let response = agent.prompt("请问 123 加上 456 等于多少?").await?;

    println!("Agent 回复: {}", response);

    Ok(())
}

简单不简单

  • JsonSchema 派生宏: 在 Rust 里,通过 #[derive(JsonSchema)],Rig 会自动生成 LLM 需要的 JSON 描述。这比 Python 里手动写描述字符串要安全得多,修改字段名时编译器会帮你检查。

  • 异步原生 (Tokio):由于 Agent 往往需要等待网络 IO(模型响应、API 调用),Rig 基于 tokio 构建,能完美集成到你的高性能后端服务中。

  • 零碎抽象:Rig 不像 LangChain 那样强迫你学习 Chain、Memory、OutputParser 等几十个概念。它认为 Agent = Model + Prompt + Tools。这种扁平化设计让调试变得非常简单。

2 简易流程

既然第四步请求了gpt为什么第三步还要创建一个函数,难道gpt会使用这个函数吗?

当然!

这是非常关键的一个点,也是 Agent(智能体) 与普通 Chatbot(聊天机器人) 的本质区别。

答案是:GPT 可能会发出了一个“调用指令”。

这里把这个过程拆解为三个阶段(这在 Java 中类似于远程过程调用 RPC 或反射):

1. 宣告能力

在第 4 步 build() 时,Rig 会把第 3 步定义的工具元数据(函数名:add,描述:Adds two numbers together,参数结构:x, y)转换成一个 JSON Schema,并随问题一起发给 GPT。

发送给 GPT 的隐藏信息:
“用户问了:123+456 等于多少?另外,我这有一个工具叫 add(x, y),如果你觉得用得着,可以告诉我。”

2. 逻辑决策

GPT 接收到请求后,它不会直接回答“答案是 579”。它会分析语义,发现自己需要做数学运算,于是它不返回文本,而是返回一个 Function Call 请求。

GPT 返回给 Rig 的信号:
{ "call": "add", "arguments": { "x": 123, "y": 456 } }

3. 本地执行

这时候,Rig 框架(在你的 Rust 程序里)收到了这个信号。它会:

  • 在本地查找到我们刚注册的那个 add_tool函数。
  • 把 GPT 给出的 JSON 参数反序列化为 Rust 的 AddArgs 结构体。
  • 真正运行我们的 Rust 代码(执行 x + y)。
  • 把结果 579 再发回给 GPT。
  • GPT 看到结果后,最后组织语言回答你:“123 加上 456 等于 579。”

这就是agent的过程。但是你应该会问:“为什么要这么麻烦?直接让 GPT 算不行吗?”
因为

  • GPT 并不擅长计算: 对于 12345 * 67890 这种大数,GPT 经常会一本正经地胡说八道。

  • GPT 无法触达外部世界: 它不能直接查询你的 MySQL 数据库,不能调用你的 Java 微服务接口,也不能读写本地文件。

通过这种模式,你可以把 llm 当成一个“大脑”,而把你的 Rust 函数当成它的“手”:

  • 大脑(GPT) 负责拆解任务、理解意图、决定什么时候该用什么工具。

  • 手(Rust 函数) 负责精准执行、访问私有数据、处理重型计算。

或者你把它想象成一个数据库查询 findUserById(Long id), GPT 就能根据用户的聊天内容,自动调用我们本地的能力,好像是去数据库里查数据了。

3 为什么不用langChain?

LangChain 是目前生态最丰富、功能最完备的 Agent 框架,但它已经不再是唯一的选择。

现在不再把 LangChain 看作一个单一的库,而是一个全栈生态系统。
它之所以被认为“最完整”,是因为它覆盖了从原型开发、生产环境编排到后期监测的全生命周期。
有核心铁三角:LangChain + LangGraph + LangSmith。

Rig 呢

而Rig (rig-core) 代表了与 LangChain 完全不同的进化方向:极致的性能、类型安全以及底层掌控力。

  • Rust 原生: 享受 Rust 的内存安全和零成本抽象。这意味着在处理数千个并发 Agent 请求时,它的资源占用远低于 Python。

  • 类型安全(Type Safety): 在 LangChain 里,你经常会遇到“运行时错误”(运行到一半才发现变量类型不对)。而在 Rig 中,依靠 Rust 强大的编译器,大部分逻辑错误在代码编译阶段就能被揪出来。

  • 极简抽象: 相比于 LangChain 嵌套五六层的类继承,Rig 的设计非常扁平,代码读起来直观得多。

流程编排呢

Rig 并没有像 LangGraph 那样引入复杂的“图”概念。(现阶段)它倾向于让开发者通过 Traits 和 异步流 来处理逻辑。

  • Rig 的解决方式: 它提供了一套清晰的 Agent 和 Tool 定义规范。虽然它没有内置像 LangGraph 那样的“可视化状态机”,但通过 Rust 的枚举(Enums)和模式匹配(Pattern Matching),能写出比 Python 更加严密的状态转换逻辑。

  • RAG 支持: Rig 内置了非常轻量化的向量存储抽象,特别适合构建高性能的检索增强生成应用。

最后,最重要的一点,这毕竟只是一个demo,怎么简单怎么来 😄