LangChain Rust 项目介绍
什么是 LangChain Rust?
LangChain Rust 是 LangChain 的 Rust 语言实现。LangChain 旨在通过可组合性来构建基于大型语言模型(LLM)的应用程序,而 LangChain Rust 则在此基础上使用 Rust 语言开展开发工作。这意味着开发人员可以利用 Rust 的强大性能和内存安全特性,构建灵活和高效的应用程序。
当前功能
LangChain Rust 提供了一系列丰富的功能,帮助开发人员更轻松地利用大型语言模型(LLM)进行开发。主要功能包括:
大型语言模型
LangChain Rust 支持多个知名的 LLM 服务:
- OpenAI
- Azure OpenAI
- Ollama
- Anthropic Claude
嵌入功能
支持多种嵌入方法,例如:
- OpenAI
- Azure OpenAI
- Ollama
- Local FastEmbed
- MistralAI
向量存储
可以通过以下存储方式管理向量数据:
- OpenSearch
- Postgres
- Qdrant
- Sqlite
- SurrealDB
链(Chain)
LangChain Rust 提供了各种链以支持不同的用例:
- LLM Chain
- 会话链(Conversational Chain)
- 简单检索器链(Conversational Retriever Simple)
- 向量存储检索器链(Conversational Retriever With Vector Store)
- 顺序链(Sequential Chain)
- 问答链(Q&A Chain)
- SQL 链(SQL Chain)
代理(Agents)
提供了嵌入工具的聊天代理以及兼容 OpenAI 工具的代理。
工具集
内置多种工具支持,包括:
- Serpapi/Google 搜索
- DuckDuckGo 搜索
- Wolfram/数学
- 命令行
- 文字转语音(Text2Speech)
语义路由
支持静态和动态语义路由,实现更加智能的决策流。
文档加载器
支持多种文档格式的加载,包括 PDF、Pandoc、HTML、CSV、Git 提交历史、以及源代码。
安装指南
要使用 LangChain Rust,首先确保在项目中添加了 serde_json
作为依赖库,其次是 langchain-rust
:
-
添加
serde_json
:cargo add serde_json
-
添加
langchain-rust
:- 简单安装:
cargo add langchain-rust
- 若项目需要,可选择安装支持
sqlite
、postgres
或surrealdb
的可选特性。
- 简单安装:
快速入门:会话链
以下提供一个简单的示例,展示如何在 Rust 项目中使用 LangChain Rust 和 OpenAI 模型来创建一个会话链:
use langchain_rust::{
chain::{Chain, LLMChainBuilder},
language_models::llm::LLM,
llm::openai::{OpenAI, OpenAIModel},
message_formatter,
prompt_args,
schemas::messages::Message,
};
#[tokio::main]
async fn main() {
let open_ai = OpenAI::default().with_model(OpenAIModel::Gpt4oMini.to_string());
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();
match chain
.invoke(prompt_args! {
"input" => "Quien es el escritor de 20000 millas de viaje submarino",
})
.await
{
Ok(result) => {
println!("Result: {:?}", result);
}
Err(e) => panic!("Error invoking LLMChain: {:?}", e),
}
}
这一示例展示了如何配置并使用一个简单的 LLM 来响应用户输入,并通过提示模板调整响应格式。LangChain Rust 提供了这些灵活的工具与功能,以实现在 Rust 中大规模与复杂的语言处理。