4 个版本
0.2.0 | 2024年7月28日 |
---|---|
0.1.2 | 2024年7月9日 |
0.1.1 | 2024年5月29日 |
0.1.0 | 2024年5月27日 |
#912 在 网页编程
每月下载量 167
64KB
1K SLoC
LLM Bridge
Rust 的 LLM API 适配器 SDK
这是一个用于与各种大型语言模型 (LLM) API 交互的 Rust SDK,从 Anthropic API 开始。它允许您向语言模型发送消息并进行对话。
功能
- 向 Anthropic API 发送单条消息并获取响应
- 与 Anthropic 的语言模型进行多轮对话
- 为每个请求自定义模型、最大令牌数和温度
- 使用 Rust 结构体处理 API 错误并解析响应
支持的 API
目前,此 SDK 仅支持 Anthropic API。然而,计划在未来添加对其他语言模型 API 的支持。请持续关注更新!
安装
将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
llm-bridge = "x.x.x"
使用方法
首先,确保您已从 Anthropic 获取了 API 密钥。将 API 密钥设置为名为 ANTHROPIC_API_KEY
的环境变量。
发送单条消息
要向 Anthropic API 发送单条消息并获取响应
use llm_bridge::client::{ClientLlm, LlmClient};
use llm_bridge::error::ApiError;
#[tokio::main]
async fn main() {
let api_key = "YOUR API KEY".to_string();
let client_type = ClientLlm::OpenAI;
let mut client = LlmClient::new(client_type, api_key);
let response = client
.request()
.user_message("Hello, GPT!")
.send()
.await
.expect("Failed to send message");
println!("Response: {:?}", response);
// Assert the response
assert_eq!(response.role(), "assistant");
assert_eq!(response.usage().input_tokens, 18);
assert!(response.usage().output_tokens > 0);
assert!(!response.first_message().is_empty());
}
另一个示例:使用 Anthropic 的 API 并覆盖请求上的某些默认设置
use llm_bridge::client::{ClientLlm, LlmClient};
use llm_bridge::error::ApiError;
#[tokio::main]
async fn main() {
let api_key = "YOUR API KEY".to_string();
let client_type = ClientLlm::Anthropic;
let mut client = LlmClient::new(client_type, api_key);
let response = client
.request()
.model("claude-3-haiku-20240307")
.user_message("Hello, Claude!")
.max_tokens(100)
.temperature(1.0)
.system_prompt("You are a haiku assistant.") // optional
.send()
.await
.expect("Failed to send message");
println!("Response: {:?}", response);
// Assert the response
assert_eq!(response.role(), "assistant");
assert_eq!(response.model(), "claude-3-haiku-20240307");
assert_eq!(response.usage().input_tokens, 18);
assert!(response.usage().output_tokens > 0);
assert!(!response.first_message().is_empty());
}
工具使用(函数调用)
LLM Bridge 现在支持工具使用(也称为 OpenAI 术语中的函数调用)。此功能允许您定义 LLM 可以用来执行特定任务的工具或函数。
创建工具
要创建工具,请使用 Tool
构建器
#[tokio::main]
async fn main() {
use llm_bridge::tool::Tool;
let weather_tool = Tool::builder()
.name("get_weather")
.description("Get the current weather in a given location")
.add_parameter("location", "string", "The city and state, e.g. San Francisco, CA", true)
.add_enum_parameter("unit", "The unit of temperature", false, vec!["celsius".to_string(), "fahrenheit".to_string()])
.build()
.expect("Failed to build tool");
}
使用 OpenAI 的工具
以下是如何使用 OpenAI 的 GPT 模型使用工具的示例 Note:如果使用 Anthropic LLM,则函数定义和响应处理方式相同。
use llm_bridge::client::{ClientLlm, LlmClient};
use llm_bridge::tool::Tool;
#[tokio::main]
async fn main() {
let api_key = "your_openai_api_key".to_string();
let client_type = ClientLlm::OpenAI;
let mut client = LlmClient::new(client_type, api_key);
let weather_tool = Tool::builder()
.name("get_weather")
.description("Get the current weather in a given location")
.add_parameter("location", "string", "The city and state, e.g. San Francisco, CA", true)
.add_enum_parameter("unit", "The unit of temperature", false, vec!["celsius".to_string(), "fahrenheit".to_string()])
.build()
.expect("Failed to build tool");
let response = client
.request()
.add_tool(weather_tool)
.model("gpt-4o")
.user_message("What's the weather like in New York?")
.system_prompt("You are a helpful weather assistant.")
.send()
.await
.expect("Failed to send message");
if let Some(tools) = response.tools() {
for tool in tools {
println!("Tool used: {}", tool.name);
println!("Tool input: {:?}", tool.input);
}
} else {
println!("No tools were used in this response");
}
println!("Response: {}", response.first_message());
}
在此示例中,我们定义了一个 get_weather
工具并将其添加到请求中。LLM 可能会根据需要使用此工具来获取用户问题的天气信息。
贡献
欢迎贡献!如果您发现任何问题或有改进建议,请打开一个问题或提交一个拉取请求。
依赖关系
~4–15MB
~214K SLoC