langchain-rust

用 Rust 写 LLM 应用,类型安全、性能好、部署轻

langchain-rust 是 LangChain 的 Rust 实现,目标是在 Rust 生态中提供编写 LLM 应用所需的核心抽象。它把提示词模板、模型调用、链式组合、记忆、输出解析、向量存储与检索等能力封装成 Rust 库,让开发者不必从零拼接 HTTP 请求和状态管理,就能构建问答、RAG、Agent 等程序。项目支持 OpenAI 等主流模型接口,并可通过 trait 扩展自定义 LLM、Embedding 与向量库。相比 Python 版,它更强调类型安全、零成本抽象和并发性能,适合对延迟、资源占用和部署体积敏感的服务端场景。当前星标约 1.3k,处于成长期,API 仍在演进,适合愿意跟进版本变化、追求 Rust 工程化 LLM 应用的团队。

开源 free 开发框架
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 1344
维护状态 较活跃
是否开源
定价模式 free

项目数据

分类开发框架
开发团队Abraxas-365
所属国家
官网地址
定价模式free
价格说明开源免费,采用MIT许可证
访问状态
是否开源
开源协议MIT
主要语言Rust
技术栈/模型langchain,llm,llms,openai,rust
GitHub 星标★ 1344
30天Star增速
HF 下载量
上线时间2024-01-31 00:00:00
最近更新2026-09-14 00:00:00
维护状态较活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-09-12
浏览次数0

使用教程

难度:入门 约 10 分钟 部署方式:库/依赖 6 步

环境要求

  • 已安装 Rust 工具链(可使用 cargo 命令)
  • 一个已存在的 Cargo 项目(执行 cargo add 的目录)
  • OpenAI API Key(README 提到可用环境变量或直接传参方式提供)
  • 需要异步运行时(示例使用 #[tokio::main])

安装与启动步骤

  1. 1添加依赖

    在现有 Cargo 项目根目录执行 cargo add,把 langchain-rust 加入依赖;库内部依赖 serde_json 做序列化。

    cargo add langchain-rust
  2. 2初始化模型

    用 OpenAI::default() 创建模型,可 with_model 指定型号;不想用环境变量时用 OpenAIConfig 传 key。

    use langchain_rust::llm::openai::{OpenAI, OpenAIModel};
    
    let open_ai = OpenAI::default().with_model(OpenAIModel::Gpt4oMini.to_string());
  3. 3直接调用模型

    调用 invoke 传入字符串即可拿到模型回复;示例中问的是训练数据里没有的内容。

    let resp = open_ai.invoke("What is rust").await.unwrap();
    println!("{}", resp);
  4. 4构建提示词链

    用 message_formatter! 组合 system 消息与 human 模板,再交给 LLMChainBuilder 生成链。

    let prompt = message_formatter![
        fmt_message!(Message::new_system_message("You are world class technical documentation writer.")),
        fmt_template!(HumanMessagePromptTemplate::new(template_fstring!("{input}", "input")))
    ];
    
    let chain = LLMChainBuilder::new().prompt(prompt).llm(open_ai.clone()).build().unwrap();
  5. 5加入对话历史

    模板里用 fmt_placeholder! 占位,调用时通过 history 传入历史消息列表实现多轮上下文。

    let prompt = message_formatter![
        fmt_message!(Message::new_system_message("You are world class technical documentation writer.")),
        fmt_placeholder!("history"),
        fmt_template!(HumanMessagePromptTemplate::new(template_fstring!("{input}", "input")))
    ];
  6. 6运行验证

    用 cargo run 执行你的示例程序,观察终端输出的模型回复与链返回结果。

    cargo run

关键配置

配置项必填说明示例
openai_api_keyOpenAI 密钥,可通过环境变量或 with_api_key 传入sk-xxxxxxxx
modelwith_model 指定的模型型号,示例使用 Gpt4oMiniGpt4oMini

如何确认成功

运行后终端打印出模型对 "What is rust" 的回复,链调用成功时输出 Result: ... 而非 panic 报错。

常见问题

Q:不想用环境变量提供密钥怎么办?

A:可在初始化模型时用 OpenAIConfig::default().with_api_key("sk-xxxxxxxx") 直接传入密钥,再链式调用 with_model 指定型号。

Q:支持哪些模型和向量库?

A:LLM 支持 OpenAI、Azure OpenAI、Ollama、Anthropic Claude;Embedding 还支持 FastEmbed、MistralAI;向量库含 OpenSearch、Postgres 等。

Q:怎么让模型记住之前的对话?

A:在 message_formatter! 中用 fmt_placeholder!("history") 占位,调用 chain.invoke 时通过 prompt_args! 的 history 传入历史消息列表。

Q:为什么一定要 serde_json?

A:README 明确说明该库运行严重依赖 serde_json 做数据序列化,添加依赖后无需额外处理。

注意事项

  • 项目仍处于成长期,API 可能随版本演进发生变化,升级前留意版本变更。
  • 密钥属敏感信息,示例中的 sk-xxxxxxxx 只是占位,请勿把真实密钥提交到仓库。
  • README 只给出 cargo add 的安装方式,未涉及 Docker、云部署等其他安装途径。

核心亮点

  • 用 Rust trait 抽象 LLM、Embedding、向量库,可替换实现且编译期检查接口
  • 提供链式组合、提示模板、记忆与输出解析等常用模块,减少重复造轮子
  • 面向服务端场景,运行时开销小、并发友好,适合对性能和部署体积敏感的项目

不足之处

  • 生态与文档成熟度不及 Python 版 LangChain,示例和第三方集成数量有限
  • API 仍在快速演进,版本升级可能带来破坏性变更,需要跟进维护

适用场景

  • 用 Rust 构建低延迟的 RAG 问答服务
  • 在已有 Rust 后端中集成 LLM 能力,避免引入 Python 运行时
  • 开发对资源占用敏感的 Agent 或对话服务并部署到边缘环境

替代项目

langchain、llm-chain、rig

项目介绍

langchain-rust 是一个开发框架领域的开源项目,官方简介:️LangChain for Rust, the easiest way to write LLM-based programs in Rust。项目使用 Rust 开发,在 GitHub 上获得 1344 星标。

上一篇:langchain4j-spring

下一篇:langchain-skills

同类项目推荐

langchain 开源

组装 AI 应用的乐高积木,从想法到上线不换工具

The agent engineering platform.

★ 146451 2026-08-09
transformers 开源

全球最大的模型仓库全家桶,想用的模型一把抓

Transformers: the model-definition framework for state-of-the-art machine learning m···

★ 166251 2026-08-09
bruno 开源

把 API 测试当代码管理,用 Git 搞定协作与版本追踪

Opensource IDE For Exploring and Testing API's (lightweight alternative to Postman/I···

★ 46994 2026-08-12