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 在 文本处理 中排名
每月412次下载
520KB
3.5K SLoC
allms: 一库统治所有ALLMs
这个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通过File
和VectorStore
功能分析您的文件
// 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-MIT和LICENSE-APACHE文件。
依赖项
~36–51MB
~802K SLoC