14个不稳定版本 (3个破坏性更新)

0.7.8 2024年8月21日
0.7.7 2024年8月5日
0.7.6 2024年7月26日
0.7.3 2024年6月28日
0.4.1 2024年1月6日

182文本处理 中排名

Download history 126/week @ 2024-05-16 164/week @ 2024-05-23 12/week @ 2024-05-30 8/week @ 2024-06-06 10/week @ 2024-06-13 130/week @ 2024-06-20 253/week @ 2024-06-27 239/week @ 2024-07-04 29/week @ 2024-07-11 23/week @ 2024-07-18 174/week @ 2024-07-25 135/week @ 2024-08-01 22/week @ 2024-08-08 57/week @ 2024-08-15

每月412次下载

MIT 许可证

520KB
3.5K SLoC

allms: 一库统治所有ALLMs

crates.io docs.rs

这个Rust库专门提供与以下LLM提供商API的类型安全交互:OpenAI、Anthropic、Mistral、Google Gemini。(未来将添加更多提供商。)它旨在简化实验不同模型的过程。它降低了在不同提供商之间迁移的风险,减少了供应商锁定问题。它还标准化了向LLM API发送请求和解释响应的过程,确保JSON数据以类型安全的方式处理。使用allms,您可以专注于创建有效的提示,为LLM提供正确的上下文,而不是担心API实现的差异。

特性

  • 支持各种LLM模型,包括OpenAI(GPT-3.5、GPT-4)、Anthropic(Claude、Claude Instant)、Mistral或Google GeminiPro。
  • 用于聊天/文本补全和助手的易于使用的函数。无论选择哪个模型,都使用相同的结构和方法。
  • 自动将响应反序列化为自定义类型。
  • 标准化提供上下文的方法,支持函数调用、工具和文件上传。
  • 通过自动计算令牌、速率限制和调试模式提高开发者的生产力。
  • 通过标准化特质轻松采用其他模型的可扩展性。
  • 使用Tokio提供的异步支持。

基础模型

OpenAI

  • APIs:聊天补全、函数调用、助手(v1 & v2)、文件、向量存储、工具(file_search)
  • 模型:GPT-4o、GPT-4、GPT-4 32k、GPT-4 Turbo、GPT-3.5 Turbo、GPT-3.5 Turbo 16k

Anthropic

  • APIs:消息、文本补全
  • 模型:Claude 3.5 Sonnet、Claude 3 Opus、Claude 3 Sonnet、Claude 3 Haiku、Claude 2.0、Claude Instant 1.2

Mistral

  • APIs:聊天完成
  • 模型:Mistral Large、Mistral Nemo、Mistral 7B、Mixtral 8x7B、Mixtral 8x22B、Mistral Medium、Mistral Small、Mistral Tiny

Google Vertex AI / AI Studio

  • APIs:聊天完成(包括流式传输)
  • 模型:Gemini 1.5 Pro、Gemini 1.5 Flash、Gemini 1.0 Pro

先决条件

  • OpenAI:API密钥(在模型构造函数中传入)
  • Anthropic:API密钥(在模型构造函数中传入)
  • Mistral:API密钥(在模型构造函数中传入)
  • Google AI Studio:API密钥(在模型构造函数中传入)
  • Google Vertex AI:GCP服务账户密钥(用于获取访问令牌)+ GCP项目ID(设置为环境变量)

示例

探索examples目录,以查看更多用例以及如何使用不同的LLM提供程序和端点类型。

使用Completions API与不同的基础模型

let openai_answer = Completions::new(OpenAIModels::Gpt4o, &API_KEY, None, None)
    .get_answer::<T>(instructions)
    .await?

let anthropic_answer = Completions::new(AnthropicModels::Claude2, &API_KEY, None, None)
    .get_answer::<T>(instructions)
    .await?

let mistral_answer = Completions::new(MistralModels::MistralSmall, &API_KEY, None, None)
    .get_answer::<T>(instructions)
    .await?

let google_answer = Completions::new(GoogleModels::GeminiPro, &API_KEY, None, None)
    .get_answer::<T>(instructions)
    .await?

示例

RUST_LOG=info RUST_BACKTRACE=1 cargo run --example use_completions

使用Assistant API通过FileVectorStore功能分析您的文件

// Create a File
let openai_file = OpenAIFile::new(None, &API_KEY)
    .upload(&file_name, bytes)
    .await?;

// Create a Vector Store
let openai_vector_store = OpenAIVectorStore::new(None, "Name", &API_KEY)
    .upload(&[openai_file.id.clone().unwrap_or_default()])
    .await?;

// Extract data using Assistant 
let openai_answer = OpenAIAssistant::new(OpenAIModels::Gpt4o, &API_KEY)
    .version(OpenAIAssistantVersion::V2)
    .vector_store(openai_vector_store.clone())
    .await?
    .get_answer::<T>(instructions, &[])
    .await?;

示例

RUST_LOG=info RUST_BACKTRACE=1 cargo run --example use_openai_assistant

许可协议

本项目采用双MIT/Apache-2.0许可协议。有关详细信息,请参阅LICENSE-MITLICENSE-APACHE文件。

依赖项

~36–51MB
~802K SLoC