Crates.io | rust-agent |
lib.rs | rust-agent |
version | 0.0.1 |
created_at | 2025-09-21 03:50:02.830206+00 |
updated_at | 2025-09-25 18:01:14.318211+00 |
description | Next Generation AI Agent Framework for Web3. |
homepage | https://www.openpick.org |
repository | https://github.com/aiqubits/rust-agent |
max_upload_size | |
id | 1848404 |
size | 123,010 |
一个用Rust编写的AI Agent框架,提供与大语言模型集成、工具调用、MCP服务连接等功能,帮助开发者构建强大的智能应用。
Rust-Agent 是一个模块化的智能代理开发框架,设计用于简化基于大语言模型的应用开发。该框架提供了统一的执行接口、灵活的工具集成机制以及与MCP服务的无缝连接能力,使开发者能够快速构建具有推理和工具使用能力的智能应用。
Runnable<I, O>
接口的统一执行模型,支持同步、异步和流式处理McpAgent
等代理实现,支持上下文管理和工具调用项目采用模块化设计,主要包含以下核心模块:
src/
├── lib.rs # 主入口和公共导出
├── core/ # 核心抽象和接口
├── models/ # 语言模型集成
├── agents/ # 代理实现
├── tools/ # 工具定义和实现
├── mcp/ # MCP服务集成
├── memory/ # 记忆功能(预留模块)
└── callbacks/ # 回调机制(预留模块)
Runnable<I, O>
等核心接口,是整个框架的基础ChatModel
接口,负责与大语言模型交互Agent
接口和 Runnable
接口,是应用的核心逻辑处理器在你的 Cargo.toml
文件中添加依赖:
dependencies = {
rust_agent = { path = "path/to/rust-agent-crate" }
}
下面是一个使用 McpAgent
构建简单对话机器人的示例:
use rust_agent::{McpAgent, McpClient, ChatMessage, ChatMessageContent, AgentOutput};
use std::sync::Arc;
use std::collections::HashMap;
// 创建MCP客户端(实际使用时需要实现McpClient接口)
let mcp_client = Arc::new(YourMcpClientImplementation::new());
// 创建McpAgent实例
let mut agent = McpAgent::new(
mcp_client,
"gpt-3.5-turbo".to_string(),
"你是一个有用的助手".to_string()
);
// 添加工具(可选)
// agent.add_tool(Box::new(YourToolImplementation::new()));
// 构建用户输入
let mut input = HashMap::new();
input.insert("input".to_string(), "你好,今天天气怎么样?".to_string());
// 调用代理处理输入
let result = agent.invoke(input).await;
// 处理结果
match result {
Ok(AgentOutput::Finish(finish)) => {
if let Some(answer) = finish.return_values.get("answer") {
println!("AI回复: {}", answer);
}
},
Ok(AgentOutput::Action(action)) => {
println!("需要调用工具: {}", action.tool);
// 处理工具调用...
},
Err(e) => {
println!("发生错误: {}", e);
}
}
Core模块定义了框架的核心抽象和接口,其中最重要的是 Runnable<I, O>
接口。这个接口统一了所有组件的执行方式,支持同步调用、批量处理和流式输出。
// Runnable接口简化定义
trait Runnable<I, O> {
// 执行单个输入并返回结果
fn invoke(&self, input: I) -> Pin<Box<dyn Future<Output = Result<O, Error>> + Send>>;
// 执行多个输入并返回结果列表
fn batch(&self, inputs: Vec<I>) -> Pin<Box<dyn Future<Output = Result<Vec<O>, Error>> + Send>>;
// 流式处理输入并返回结果流
fn stream(&self, input: I) -> Pin<Box<dyn Stream<Item = Result<O, Error>> + Send>>;
}
Models模块提供了与大语言模型的集成,主要实现了 ChatModel
接口。当前支持OpenAI兼容的接口,如示例中的 OpenAIChatModel
。
// 创建OpenAI模型实例
let model = OpenAIChatModel::new("your-api-key".to_string(), Some("https://api.openai.com/v1"))
.with_model("gpt-4".to_string())
.with_temperature(0.7);
// 构建消息
let messages = vec![
ChatMessage::System(ChatMessageContent {
content: "你是一个助手".to_string(),
name: None,
additional_kwargs: HashMap::new()
}),
ChatMessage::Human(ChatMessageContent {
content: "你好".to_string(),
name: None,
additional_kwargs: HashMap::new()
})
];
// 调用模型
let result = model.invoke(messages).await;
Agents模块实现了智能代理的核心逻辑,其中 McpAgent
是主要的实现类。它集成了语言模型调用、工具管理和响应生成等功能。
McpAgent
的主要功能包括:
Tools模块定义了工具的接口和实现机制。工具是代理可以调用的外部函数或服务,用于扩展代理的能力。框架提供了工具注册、查找和调用的统一机制。
MCP模块提供了与MCP服务交互的客户端和适配器。MCP允许代理连接到远程服务并调用那里的工具。该模块定义了 McpClient
接口和 McpToolAdapter
适配器类。
项目提供了多个示例,展示了如何使用框架构建不同类型的智能应用。示例位于 examples/
目录下。
例如,mcp_agent_chatbot.rs
示例展示了如何使用 McpAgent
构建一个简单的聊天机器人:
# 运行示例
cargo run --example mcp_agent_chatbot
使用框架时,可能需要配置以下环境变量:
OPENAI_API_KEY
: OpenAI API密钥OPENAI_API_URL
: OpenAI API基础URL(可选,默认为OpenAI官方API)Tool
接口或使用 McpToolAdapter
适配器如果你想为项目做贡献,请遵循以下步骤: