#llm #langchain

langchainrust

A LangChain-inspired framework for building LLM applications in Rust

3 releases

Uses new Rust 2024

0.1.2 Feb 19, 2026
0.1.1 Jan 18, 2026
0.1.0 Jan 5, 2026

#642 in Asynchronous

MIT/Apache

115KB
2.5K SLoC

langchainrust

Rust License

一个受 LangChain 启发的 Rust 框架,用于构建基于大模型(LLM)的应用。

📖 详细文档: docs/USAGE.md

✨ 特性

LLM 支持

  • OpenAI 兼容接口 - 支持流式与非流式输出
  • Qwen - 通义千问接口
  • 模型路由 - 根据问题难度自动选择合适的模型

Agent

  • ReActAgent - 支持 Tool 调用的智能代理
  • PlannedExecutor - 自动分解复杂任务、执行、汇总
  • 工具调用 - 可选的工具使用,LLM 自主判断
  • RAG 检索 - 结合向量数据库的知识增强

提示词工程

  • PromptTemplate - 字符串模板 {var} 替换
  • ChatPromptTemplate - 多角色消息模板

其他

  • Memory - 对话记忆管理
  • Chains - 链式调用组合
  • Retrieval - 文档分割、向量存储、语义检索
  • Tools - 内置计算器、天气、日期时间等工具

📦 安装

[dependencies]
langchainrust = "0.1"

🚀 快速开始

基础 LLM 调用

use langchainrust::llms::{LLM, OpenAIConfig};

let llm = LLM::new(OpenAIConfig {
    api_key: std::env::var("OPENAI_API_KEY").unwrap(),
    base_url: "https://api.openai.com/v1".to_string(),
    model: "gpt-3.5-turbo".to_string(),
    streaming: false,
    factor: 3,
});

let response = llm.invoke("你好,介绍一下 Rust 语言").await?;
println!("{}", response);

Agent + Tools

use langchainrust::agent::{AgentExecutor, ReActAgent};
use langchainrust::tools::Calculator;
use std::sync::Arc;

let tools: Vec<Arc<dyn Tool>> = vec![Arc::new(Calculator)];
let agent = ReActAgent::new(llm, tools.clone(), None);
let executor = AgentExecutor::new(Box::new(agent), tools);

let result = executor.run("计算 37 + 48").await?;

RAG 检索增强

use langchainrust::agent::ReActAgent;
use langchainrust::retrieval::{
    Document, InMemoryVectorStore, MockEmbeddingModel,
    RecursiveCharacterSplitter, SimilarityRetriever, TextSplitter,
};

// 准备文档并创建检索器
let retriever = SimilarityRetriever::new(vector_store, embedding_model);
retriever.add_documents(chunks).await?;

// 创建带 RAG 的 Agent
let agent = ReActAgent::with_retriever(
    llm, tools, memory, retriever, 3
);

任务规划

use langchainrust::agent::{PlannedExecutor, ReActAgent};

let executor = PlannedExecutor::new(llm, agent, tools)
    .with_max_sub_tasks(3)
    .with_verbose(true);

// 自动分解、执行、汇总
let result = executor
    .run("分析项目代码,写测试用例,运行测试")
    .await?;

📚 文档

🧪 运行测试

# 运行全部测试
cargo test

# 运行特定测试
cargo test --test planner_test -- --nocapture
cargo test --test retrieval_test -- --nocapture

📁 项目结构

src/
├── llms/          # LLM 实现(OpenAI、Qwen、模型路由)
├── agent/         # Agent 框架
│   ├── react/     # ReActAgent 实现
│   └── planner/   # 任务规划模块
├── retrieval/     # RAG 检索组件
├── tools/         # 工具接口与内置工具
├── prompts/       # 提示词模板
├── memory/        # 记忆管理
└── chains/        # 链式调用

🔧 配置与安全

  • 不要将真实 API Key 提交到 Git 仓库
  • 推荐使用环境变量:OPENAI_API_KEY
  • 支持 OpenAI 代理地址配置

📄 License

MIT OR Apache-2.0

Dependencies

~8–26MB
~319K SLoC