client icon indicating copy to clipboard operation
client copied to clipboard

Added filename support for the file payload

Open apc-harold opened this issue 1 year ago • 4 comments

What:

  • [x] Bug Fix
  • [ ] New Feature

Description:

When uploading a file using:

$client->files()->upload([
    'purpose' => $purpose,
    'file' => $file,
]);

The uploaded file is automatically named Nyholm-Psr7-Zval:, which causes issues because it doesn't have a file extension. This prevents the file from being attached to an assistant.

The proposed changes allow for a file name to be provided by instead passing an array value for the file key:

$client->files()->upload([
    'purpose' => $purpose,
    'file' => [
        'data' => $file,
        'fileName' => $fileName,
    ],
]);

apc-harold avatar Jun 04 '24 11:06 apc-harold

Hi @apc-harold

I am not able to reproduce the issue. When I upload a file, the filename is set properly.

Could you please provided a full example or a demo repository which reproduces the issue?

gehrisandro avatar Jun 06 '24 19:06 gehrisandro

Hi @gehrisandro,

Thanks for checking it out!

I'm quite busy at the moment so won't be able to provide an example, but:

  • Using Laravel, using $file->get() to retrieve the file
  • Using the beta version

I'll maybe have some time on w/s 17th, so will make a reminder to come back and make an example if it's still here.

apc-harold avatar Jun 07 '24 09:06 apc-harold

I stumbled on the same problem: it is not easily possible to upload string data as a file, because no filename (or an invalid filename) gets sent that is missing the ".jsonl" extension.

This may also be remedied by adding the following code to the file upload example:

$jsonlData = "{...}\n{...}";
$response = $client->files()->upload([
        'purpose' => 'fine-tune',
        'file' => \GuzzleHttp\Psr7\Utils::streamFor($jsonlData, ["metadata" => ["uri" => "upload.jsonl"]]),
    ]);

DennisBirkholz avatar Jun 27 '24 15:06 DennisBirkholz

@DennisBirkholz thanks! Works for me. I'm using the Laravel driver and was stuck in how properly handle this uploads.

olimarferraz avatar Nov 08 '24 16:11 olimarferraz