1 个不稳定版本
0.1.0 | 2023年1月9日 |
---|
#24 在 #api-response
10KB
70 行
达芬奇
一个用于简单使用 OpenAi API 中的 davinci 模型的 crate。
此库提供了一个向 OpenAi Davinci 模型提问并获取响应的功能。
依赖项
此库使用 3 个独特的依赖项
reqwest
: 用于进行 API 调用 -> 144 kBtokio
: 用于管理异步和等待 -> 625 kBserde
: 用于解析 OpenAi API 响应 -> 77.1 kB
fn davinci
davinci
是主函数,它有 4 个参数
api_key
-> String - 这是 OpenAi API 密钥。可以在 这里 获取context
-> String - 问题上下文。question
-> String - 要向模型提出的问题或短语。tokens
-> i32 - 响应中使用的最大标记数。
context
和 question
context
和 question
是模型的提示。提示是作为输入给模型的文本字符串,用于指导模型执行特定任务。
向模型提供良好和强大的上下文(例如,通过在新的输入之前提供一些高质量的期望行为示例)可以更容易地获得更好和期望的输出。
tokens
标记是模型生成的最大标记数(包括提示)。
文本的 GPT 模型系列使用标记进行处理,这些标记是文本中常见的字符序列。模型理解这些标记之间的统计关系,并在生成标记序列中的下一个标记方面表现出色。
标记通常对应于约 4 个英文字符的文本。这相当于大约四分之三的单词(因此 100 个标记 ~= 75 个单词)。
需要注意的是,tokens
的最大值是 2048(新模型中为 4096)。
了解提示中包含的标记数量的方法之一是使用 此网站
使用示例
在这个快速示例中,我们使用 davinci 找到用户问题的答案。
use davinci::davinci;
use std::io;
fn main() {
let api: String = String::from("vj-JZkjskhdksKXOlncknjckukNKKnkJNKJNkNKNk");
let max_tokens: i32 = 100;
let context: String =
String::from("The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.\n\nHuman: Hello, who are you?\nAI: I am an AI created by OpenAI. How can I help you today?");
println!("What is your question?");
// Reading the user input
let mut question: String = String::new();
io::stdin()
.read_line(&mut question)
.expect("Error, you have to write something!");
let response: String = match davinci(api, context, question, max_tokens) {
Ok(res) => res,
Err(error) => error.to_string(),
};
println!("{}", response);
}
依赖项
~6–19MB
~279K SLoC