#openai-api #openai #ai #api #api-response

davinci

一个用于简单使用 OpenAi API 中的 davinci 模型的 crate。

1 个不稳定版本

0.1.0 2023年1月9日

#24#api-response

MIT/Apache

10KB
70

达芬奇

一个用于简单使用 OpenAi API 中的 davinci 模型的 crate。

此库提供了一个向 OpenAi Davinci 模型提问并获取响应的功能。

依赖项

此库使用 3 个独特的依赖项

  • reqwest : 用于进行 API 调用 -> 144 kB
  • tokio : 用于管理异步和等待 -> 625 kB
  • serde : 用于解析 OpenAi API 响应 -> 77.1 kB

fn davinci

davinci 是主函数,它有 4 个参数

  • api_key -> String - 这是 OpenAi API 密钥。可以在 这里 获取
  • context -> String - 问题上下文。
  • question -> String - 要向模型提出的问题或短语。
  • tokens -> i32 - 响应中使用的最大标记数。

contextquestion

contextquestion 是模型的提示。提示是作为输入给模型的文本字符串,用于指导模型执行特定任务。

向模型提供良好和强大的上下文(例如,通过在新的输入之前提供一些高质量的期望行为示例)可以更容易地获得更好和期望的输出。

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