如何向OpenAI API发送文件?

为了好玩,我想尝试制作一个工具,让chatgpt来为Rust文件生成文档。我发现了一个问题,API允许的最大消息长度似乎是2048个字符。

OpenAI API 允许发送文件,所以我希望通过将文件发送到服务器,模型能够获得生成注释所需的上下文。

然而,我似乎无法做到这一点,我尝试了以下方法:

use std::fmt::Write;use std::fs;use std::io;use std::io::Read;use chatgpt::prelude::*;use clap::Parser;use syn;use syn::Item;use reqwest;#[derive(Parser, Debug)]#[command(author, version, about, long_about = None)]struct Args{    /// Path to the source code to document    #[arg(short, long)]    file_path: String,}fn main(){    let args = Args::parse();    let mut file = std::fs::File::open(args.file_path).unwrap();    let mut content = String::new();    file.read_to_string(&mut content).unwrap();    let ast = syn::parse_file(&content).unwrap();    let mut input_buffer = String::new();    // Getting the API key here    let key = "My key that I have replaced for obvious reasons";    {        // Create a reqwest client        let client = reqwest::blocking::Client::new();        // Make a POST request to the OpenAI API        let response = client            .post("https://api.openai.com/v1/files")            .header("Authorization", "Bearer My key that I have replaced for obvious reasons")            .header("Content-Type", "application/json")            .body(content.clone())            .send().unwrap();        // Check if the request was successful        if response.status().is_success() {            println!("File uploaded successfully!");        } else {            println!("Failed to upload file. Status code: {}", response.status());        }        std::mem::forget(client);        std::mem::forget(response);    }}

我得到的响应是:

Failed to upload file. Status code: 415 Unsupported Media Type

我不确定我做错了什么。我还尝试将内容类型更改为text/plain,但得到了相同的错误。


回答:

async-openai 包中有 Files,它允许你向OpenAI上传文件:

let client = Client::new();let request = CreateFileRequest {    input: "path/to/my/file.bin".into(),    purpose: "test".into(),};let response = client.files().create (request).await?;

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注