7个版本 (破坏性更新)
0.7.0 | 2023年5月2日 |
---|---|
0.6.0 | 2023年1月16日 |
0.5.0 | 2023年1月13日 |
0.4.0 | 2023年1月2日 |
0.1.0 | 2022年12月27日 |
#95 in #openai-api
每月38次下载
在gpt_text中使用
1MB
1.5K SLoC
fieri
概述
OpenAI的非官方Rust客户端。
fieri为与OpenAI交互提供了异步的Rust接口,允许您轻松地将OpenAI的最先进的机器学习模型用于您的Rust项目。
前提条件
在您可以使用OpenAI的Rust客户端之前,您需要在OpenAI开发者门户处注册API密钥。注册后,您可以在开发者门户的API密钥部分找到您的API密钥。
安装
在您的终端中运行 cargo add fieri
以添加客户端的最新版本。
基本用法
根据提示生成文本
use fieri::{
completion::{create, CompletionParamBuilder},
Client, Error,
};
use std::env;
#[tokio::main]
async fn main() -> Result<(), Error> {
let client = Client::new();
let param = CompletionParamBuilder::new("ada")
.prompt("Generate a plot for an absurd interstellar parody.")
.max_tokens(500)
.temperature(0.9)
.top_p(1.0)
.frequency_penalty(0.0)
.presence_penalty(0.0)
.build()?;
let resp = create(&client, ¶m).await?;
println!("Generated text: {:#?}", resp);
Ok(())
}
根据提示生成并流回文本
use fieri::{
completion::{create_with_stream, Completion, CompletionParamBuilder},
Client, Error,
};
use std::env;
#[tokio::main]
async fn main() -> Result<(), Error> {
let client = Client::new();
let param = CompletionParamBuilder::new("ada")
.prompt("unnecessarily lo")
.temperature(0.5)
.build()?;
let mut resp = create_with_stream(&client, ¶m).await?;
while let Some(chunk) = resp.chunk().await? {
if chunk.to_vec() == b"data: [DONE]\n\n" {
break;
}
let v: Completion = serde_json::from_slice(&chunk[5..])?;
v.choices.iter().for_each(|c| println!("{:?}", c.text));
}
Ok(())
}
根据提示生成图像并保存到本地。
use fieri::{
image::{ImageSize, GenerateImageParamBuilder, generate},
Client, Error,
};
use std::env;
#[tokio::main]
async fn main() -> Result<(), Error> {
let client = Client::new();
let param = GenerateImageParamBuilder::new("A bunch of cats dancing tango on top of the highest mountain on Mars.")
.size(ImageSize::S1024x1024)
.n(1)
.build()?;
generate(&client, ¶m)
.await?
.save("/tmp/")
.await?;
Ok(())
}
默认情况下,API密钥和组织从环境变量 OPENAI_API_KEY
& OPENAI_ORGANIZATION
中隐式加载。 您可以按客户端配置/覆盖它们,例如:例如使用
use fieri::Client
let client = Client::new().api_key("<key>");
let client_with_org = Client::new().organization("<organization>");
更多示例可以在文档中找到。
局限性
注意,OpenAI的Rust客户端按原样提供,并且不受OpenAI的官方支持。虽然我们将尽力保持库的最新状态和错误免费,但我们不能保证它始终按预期工作。
此外,API有使用限制,可能会影响您使用模型的能力。您可以在您的使用部分查看您当前的使用情况和限制。
许可证
fieri根据MIT许可证提供。请参阅LICENSE。
依赖项
~7–22MB
~309K SLoC