10个版本

0.1.9 2024年7月26日
0.1.8 2024年7月26日

#1129网络编程

Download history 553/week @ 2024-07-20 220/week @ 2024-07-27 2/week @ 2024-08-03

每月775次下载

MIT 协议

480KB
5K SLoC

Crab AI

Crates.io Documentation

Crab AI库为任何Rust应用程序提供方便的访问OpenAI REST API的途径。该库的目标是尽可能紧密地遵循Python和Node.js官方OpenAI SDK的实现。然而,它是不官方的,并且不由OpenAI维护。

注意:此项目仍在开发中,不应在生产环境中使用,许多结构方面的内容可能会更改。

文档

REST API文档可在platform.openai.com找到。该库的完整API文档可在docs.rs找到。

安装

将以下内容添加到您的Cargo.toml

[dependencies]
crab_ai = "0.1.9"

使用

该库的完整API可在文档中找到。

use crab_ai::{OpenAI, ClientOptions};
use crab_ai::resources::chat::{ChatCompletionContent::{Multiple, Text},
    ChatCompletionContentPart::Image, ChatCompletionCreateParams, Detail,
    ChatCompletionMessageParam::{Assistant, System, User}, ImageURL,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let openai = OpenAI::new(ClientOptions::new())?;

    let completion = openai.chat.completions.create(ChatCompletionCreateParams {
        messages: vec![System{ content: "You are a helpful assistant.", name: None },
            User{ content: Text("Who won the world series in 2020?"), name: None },
            Assistant{ content: Some("The Los Angeles Dodgers won the World Series in 2020."), name: None, tool_calls: None },
            User{ content: Text("Where was it played?"), name: None }],
        model: "gpt-4o-mini",
        ..Default::default()
    }).await?;

    println!("{:?}", completion);
    Ok(())
}

虽然您可以直接提供api_key,但我们建议使用环境变量来保护您的API密钥的安全。

示例

有关使用示例,请参阅示例目录

OpenAI助手Beta

Crab AI库包含对目前处于Beta阶段的OpenAI Assistant API的支持。此功能允许您使用助手创建和管理线程、消息和运行。助手API旨在帮助构建能够以更动态和情境感知的方式与用户互动的对话式代理。

示例:创建线程和消息

以下是一个示例,演示如何使用助手API在线程中创建线程并向其中添加消息。

let thread = openai.beta.threads.create(ThreadCreateParams::default()).await?;

let message = openai.beta.threads.messages.create(
    &thread.id,
    MessageCreateParams {
        role: message_create_params::Role::User,
        content: message_create_params::Content::Text("I need to solve the equation `3x + 11 = 14`. Can you help me?".to_string()),
        ..Default::default()
    },
    None,
).await?;

此示例展示了如何通过线程初始化对话并向其中添加消息。

创建运行和轮询完成状态

以下是一个示例,演示如何使用助手API创建运行并轮询,直到其达到终端状态。

let run = openai.beta.threads.runs.create_and_poll(
    &thread.id,
    RunCreateParams {
        assistant_id: "asst_ABcDEFgH12345678910xZZZz".to_string(),
        instructions: Some("Please address the user as Jane Doe. The user has a premium account.".to_string()),
        ..Default::default()
    },
    None
).await?;

if run.status == RunStatus::Completed {
    let messages = openai.beta.threads.messages.list(&run.thread_id, None, None).await?;

    for message in messages.data.iter().rev() {
        match &message.content.first().unwrap() {
            messages::MessageContent::Text { text } => {
                println!("{:?} > {:?}", message.role, text.value);
            }
            _ => {}
        }
    }
}

通过集成这些功能,Crab AI库提供了一个强大的界面,用于利用OpenAI API的最新功能,包括目前处于Beta阶段的助手API。

依赖关系

~7–18MB
~259K SLoC