agent 0.0.1

A flexible AI Agent SDK for building intelligent agents
Documentation
# 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