6 个版本

新版本 0.1.5 2024 年 8 月 18 日
0.1.4 2024 年 8 月 16 日

1266网页编程 中排名

Download history 16/week @ 2024-08-07 538/week @ 2024-08-14

每月 554 次下载

MIT AND Apache-2.0

38KB
924

Anthropic Rust SDK

Crates.io MIT licensed APACHE-2.0 licensed Build Status

这是 Anthropic API 的非官方 Rust SDK。

安装

anthropic-rs 添加为 Cargo.toml 的依赖项

$ cargo add anthropic-rs

用法

流式传输消息的示例。

use anthropic_rs::{
    api::{
        message::{Content, ContentType, Message, MessageRequest, Role},
        stream::StreamEvent,
    },
    client::Client,
    config::Config,
    models::model::Model,
};
use futures_util::StreamExt;
use std::io::Write;

#[tokio::main]
async fn main() {
    let api_key = std::env::var("ANTHROPIC_API_KEY")
        .expect("environment variable ANTHROPIC_API_KEY should be defined");

    let config = Config::new(api_key);
    let client = Client::new(config).unwrap();

    let message = MessageRequest {
        model: Model::Claude35Sonnet,
        stream: Some(true),
        max_tokens: 1024,
        messages: vec![Message {
            role: Role::User,
            content: vec![Content {
                content_type: ContentType::Text,
                text: "Explain the theory of relativity".to_string(),
            }],
        }],
        ..Default::default()
    };

    let mut stream = client.stream_message(message.clone()).await.unwrap();

    while let Some(event) = stream.next().await {
        let event = event.unwrap();
        match event {
            StreamEvent::ContentBlockDelta(content) => {
                print!("{}", content.delta.text);
                std::io::stdout().flush().unwrap();
            }
            StreamEvent::MessageStop => break,
            _ => {}
        }
    }
}

许可证

此项目采用 MIT 许可证Apache-2.0 许可证

依赖项

~6–17MB
~251K SLoC