
langchain-rust
用 Rust 写 LLM 应用,类型安全、性能好、部署轻
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-09-12 · 当前星标 ★ 1359
使用教程
ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。
环境要求
- 已安装 Rust 工具链(可使用 cargo 命令)
- 一个已存在的 Cargo 项目(执行 cargo add 的目录)
- OpenAI API Key(README 提到可用环境变量或直接传参方式提供)
- 需要异步运行时(示例使用 #[tokio::main])
安装与启动步骤
-
1添加依赖
在现有 Cargo 项目根目录执行 cargo add,把 langchain-rust 加入依赖;库内部依赖 serde_json 做序列化。
cargo add langchain-rust -
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直接调用模型
调用 invoke 传入字符串即可拿到模型回复;示例中问的是训练数据里没有的内容。
let resp = open_ai.invoke("What is rust").await.unwrap(); println!("{}", resp); -
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加入对话历史
模板里用 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运行验证
用 cargo run 执行你的示例程序,观察终端输出的模型回复与链返回结果。
cargo run
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
openai_api_key | 是 | OpenAI 密钥,可通过环境变量或 with_api_key 传入 | sk-xxxxxxxx |
model | 否 | with_model 指定的模型型号,示例使用 Gpt4oMini | Gpt4oMini |
如何确认成功
运行后终端打印出模型对 "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-skills
同类项目推荐
llama_ros
开源
在 ROS 2 里直接跑本地大模型,机器人秒变能听会看会聊
llama.cpp (GGUF LLMs) and llava.cpp (GGUF VLMs) for ROS 2
fondbot
开源
用 PHP 快速搭建多平台聊天机器人,省去重复造轮子。
Chatbot framework
dsh-hub-cli
开源
一条命令搞定 DSH 插件校验、解析与安装
Open-source CLI, schemas, resolver, and DSH agent tools for DSH Plugin Hub
agent-workflows
开源
让 AI 编码更稳,不怕模型悄悄变笨
Engineering workflows for AI coding agents or flesh engineers. It helps absorb silen···
LangGraph-GUI
开源
拖拽节点,可视化构建并运行 LangGraph 工作流
Visual node-edge graph GUI editor for LangGraph and run with local LLM or online API
apowerb
开源
把 AI Agent 从原型编排到上生产运维
The open-source agentic framework to build, orchestrate, and operate production AI a···
Telegram.Bot.Framework
开源
用 C# 快速搭建 Telegram 机器人,省去重复造轮子
Simple framework for building Telegram bots
llms-with-matlab
开源
在 MATLAB 里几行代码直连 GPT、Azure 与本地 Ollama
Connect MATLAB to LLM APIs, including OpenAI® Chat Completions, Azure® OpenAI Serv···
ai-sdk-provider-codex-cli
开源
用ChatGPT订阅白嫖GPT-5,接入AI SDK应用
Vercel AI SDK community provider for Codex CLI - Use Plus/Pro Subscription via spawn···