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 中添加:

[dependencies]
agent = "0.1.0"

快速开始

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 提供商,统一的接口设计:

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 管理对话历史和上下文:

use agent::MemoryStore;

let memory = MemoryStore::with_max_size(100);

Tools

工具允许 Agent 执行特定任务:

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