agent-kit
约 883 字大约 3 分钟
2025-09-08
概述
RWKV Agent Kit 是一个基于RWKV的智能体开发框架,提供了完整的智能记忆系统和AI助手开发能力。
核心模块
RwkvAgentKit
主要的智能体类,提供完整的AI助手功能。
use rwkv_agent_kit::prelude::*;
// 创建智能体配置
let config = RwkvAgentKitConfig {
model_path: "path/to/model.pth".to_string(),
database_url: "sqlite:memory.db".to_string(),
max_memory_size: 1000,
..Default::default()
};
// 使用构建器模式创建智能体
let agent = RwkvAgentKitBuilder::new()
.with_config(config)
.with_memory_manager(memory_manager)
.build()
.await?;主要方法
new(config: RwkvAgentKitConfig) -> Result<Self>
创建新的智能体实例。
参数:
config: 智能体配置
返回值:
Result<RwkvAgentKit>: 成功时返回智能体实例
示例:
let config = RwkvAgentKitConfig::default();
let agent = RwkvAgentKit::new(config).await?;chat(&mut self, message: &str) -> Result<String>
与智能体进行对话。
参数:
message: 用户输入的消息
返回值:
Result<String>: 智能体的回复
示例:
let response = agent.chat("你好,请介绍一下自己").await?;
println!("智能体回复: {}", response);add_memory(&mut self, content: &str, memory_type: MemoryType) -> Result<Uuid>
添加新的记忆。
参数:
content: 记忆内容memory_type: 记忆类型
返回值:
Result<Uuid>: 记忆的唯一标识符
示例:
let memory_id = agent.add_memory(
"用户喜欢喝咖啡",
MemoryType::UserPreference
).await?;search_memories(&self, query: &str) -> Result<Vec<Memory>>
搜索相关记忆。
参数:
query: 搜索查询
返回值:
Result<Vec<Memory>>: 相关记忆列表
示例:
let memories = agent.search_memories("咖啡").await?;
for memory in memories {
println!("记忆: {}", memory.content);
}RwkvAgentKitBuilder
智能体构建器,提供灵活的配置选项。
let agent = RwkvAgentKitBuilder::new()
.with_model_path("path/to/model.pth")
.with_database_url("sqlite:memory.db")
.with_max_memory_size(2000)
.with_learning_rate(0.01)
.build()
.await?;构建方法
new() -> Self
创建新的构建器实例。
with_config(mut self, config: RwkvAgentKitConfig) -> Self
设置完整配置。
with_model_path(mut self, path: impl Into<String>) -> Self
设置模型文件路径。
with_database_url(mut self, url: impl Into<String>) -> Self
设置数据库连接URL。
with_max_memory_size(mut self, size: usize) -> Self
设置最大记忆数量。
with_learning_rate(mut self, rate: f32) -> Self
设置学习率。
build(self) -> Result<RwkvAgentKit>
构建智能体实例。
RwkvAgentKitConfig
智能体配置结构。
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RwkvAgentKitConfig {
/// RWKV模型文件路径
pub model_path: String,
/// 数据库连接URL
pub database_url: String,
/// 最大记忆数量
pub max_memory_size: usize,
/// 学习率
pub learning_rate: f32,
/// 记忆衰减率
pub memory_decay_rate: f32,
/// 语义相似度阈值
pub semantic_threshold: f32,
/// 是否启用持续学习
pub enable_continuous_learning: bool,
/// 日志级别
pub log_level: String,
}默认配置
impl Default for RwkvAgentKitConfig {
fn default() -> Self {
Self {
model_path: "models/rwkv-4-world-3b-v1-20230803-ctx4096.pth".to_string(),
database_url: "sqlite:memory.db".to_string(),
max_memory_size: 1000,
learning_rate: 0.01,
memory_decay_rate: 0.001,
semantic_threshold: 0.7,
enable_continuous_learning: true,
log_level: "info".to_string(),
}
}
}错误处理
所有API方法都返回 Result<T, MemoryError> 类型,支持完整的错误处理。
use rwkv_agent_kit::error::MemoryError;
match agent.chat("hello").await {
Ok(response) => println!("回复: {}", response),
Err(MemoryError::DatabaseError(e)) => {
eprintln!("数据库错误: {}", e);
},
Err(MemoryError::ModelError(e)) => {
eprintln!("模型错误: {}", e);
},
Err(e) => {
eprintln!("其他错误: {}", e);
}
}完整示例
use rwkv_agent_kit::prelude::*;
use tokio;
#[tokio::main]
async fn main() -> Result<()> {
// 创建配置
let config = RwkvAgentKitConfig {
model_path: "models/rwkv-model.pth".to_string(),
database_url: "sqlite:agent_memory.db".to_string(),
max_memory_size: 2000,
learning_rate: 0.01,
..Default::default()
};
// 创建智能体
let mut agent = RwkvAgentKit::new(config).await?;
// 添加一些初始记忆
agent.add_memory(
"用户是一名软件工程师,喜欢Rust编程",
MemoryType::UserProfile
).await?;
agent.add_memory(
"用户经常在晚上工作,喜欢喝咖啡",
MemoryType::UserPreference
).await?;
// 开始对话
let response = agent.chat("你好,我想了解一下Rust的异步编程").await?;
println!("智能体: {}", response);
// 搜索相关记忆
let memories = agent.search_memories("编程").await?;
println!("找到 {} 条相关记忆", memories.len());
Ok(())
}版本信息
use rwkv_agent_kit::{VERSION, NAME, DESCRIPTION, version_info};
println!("库名称: {}", NAME);
println!("版本: {}", VERSION);
println!("描述: {}", DESCRIPTION);
println!("完整信息: {}", version_info());