# AI Agent SDK
一个灵活的 Rust AI Agent SDK,用于构建智能代理系统。
## 特性
- 🤖 **灵活的 Agent 架构** - 支持自定义执行器和工具
- 💾 **内存管理** - 内置消息历史和上下文管理
- 🔧 **工具系统** - 可扩展的工具注册和执行
- ⚡ **异步支持** - 基于 Tokio 的异步运行时
- 🎯 **类型安全** - 完整的类型系统和错误处理
- 🌐 **多模型支持** - 支持 OpenAI、Anthropic、Google、xAI、DeepSeek 等主流 LLM 提供商
## 安装
在 `Cargo.toml` 中添加:
```toml
[dependencies]
agent = "0.1.0"
```
## 快速开始
```rust
use agent::{Agent, Result};
use agent::provider::openai::OpenAIProvider;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<()> {
// 创建 Provider
let provider = Arc::new(OpenAIProvider::new("your-api-key"));
// 构建 Agent
let mut agent = Agent::builder()
.name("MyAgent")
.description("A helpful assistant")
.system_prompt("You are a helpful AI assistant")
.model("gpt-4")
.temperature(0.7)
.provider(provider)
.build();
// 运行对话
let response = agent.run("Hello, how are you?").await?;
println!("Agent: {}", response);
Ok(())
}
```
## 核心概念
### Agent
Agent 是核心组件,负责协调消息、工具和执行流程。
### Model Providers
支持多个 LLM 提供商,统一的接口设计:
```rust
use agent::{Message, ModelConfig, ModelProvider};
use agent::provider::openai::OpenAIProvider;
let provider = OpenAIProvider::new("your-api-key");
let config = ModelConfig {
model: "gpt-4".to_string(),
temperature: 0.7,
max_tokens: Some(1000),
..Default::default()
};
let messages = vec![Message::user("Hello!")];
let response = provider.complete(messages, &config).await?;
```
支持的提供商:
- **OpenAI** - GPT-4, GPT-3.5 等
- **Anthropic** - Claude 3 系列
- **Google** - Gemini Pro
- **xAI** - Grok 系列
- **DeepSeek** - DeepSeek Chat
### Memory
Memory 管理对话历史和上下文:
```rust
use agent::MemoryStore;
let memory = MemoryStore::with_max_size(100);
```
### Tools
工具允许 Agent 执行特定任务:
```rust
use agent::{Tool, ToolRegistry};
use async_trait::async_trait;
use serde_json::Value;
struct CalculatorTool;
#[async_trait]
impl Tool for CalculatorTool {
fn name(&self) -> &str { "calculator" }
fn description(&self) -> &str { "Performs calculations" }
async fn execute(&self, params: Value) -> Result<Value> {
// 实现计算逻辑
Ok(Value::String("42".to_string()))
}
}
let tools = ToolRegistry::new()
.register(Arc::new(CalculatorTool));
```
## 许可证
MIT