openai-php / client

⚡️ OpenAI PHP is a supercharged community-maintained PHP API client that allows you to interact with OpenAI API.
MIT License
4.56k stars 465 forks source link

[improvement]: No support for assistant version v2 #381

Closed ks-dipeshc closed 1 month ago

ks-dipeshc commented 2 months ago

Description

Hello,

Current library only support the lagacy (v1) version for assistant, threads, and messages. So we can not used the latest supported request payload mention in open-ai documentation.

Thank you.

Steps To Reproduce

Can not use tool_resources field of the create thread api. click here

OpenAI PHP Client Version

latest

PHP Version

8.1.20

Notes

No response

gehrisandro commented 2 months ago

Going to add support for v2 asap.

jhull commented 2 months ago

Can you also make sure to add 'attachments' to create messages endpoints? 🙏

fangyuan0306 commented 2 months ago

Please hurry, I found some issues with v1

Jamz1Santos commented 2 months ago

On line 18 of ](https://github.com/openai-php/client/blob/main/src/OpenAI.php line 18:

->withHttpHeader('OpenAI-Beta', 'assistants=v1') to ->withHttpHeader('OpenAI-Beta', 'assistants=v2')

Just a quick fix and my code runs. but there still need to fix migration issues.

ircykk commented 1 month ago

You can create client manually with beta header:

$client = OpenAI::factory()
    ->withApiKey($apiKey)
    ->withOrganization($organization)
    ->withHttpHeader('OpenAI-Beta', 'assistants=v2')
    ->make();

but it won't help because the class doesn't match the request/response

subet commented 1 month ago

@gehrisandro, we are looking forward to its completion :D Is there any platform where we can buy you a coffee?

wishborn commented 1 month ago

Do we have any kind of ETA on when these changes might be getting implemented? I'm in the middle of a big upgrade of our AI code and want to utilize this asap. I second @subet request too.

nunomaduro commented 1 month ago

Folks; be sure to sponsor Sandro's work here: gehrisandro.

subet commented 1 month ago

Thanks @nunomaduro ! We will...

ehsanwwe commented 1 month ago

when i migrate to V2 by below way ->withHttpHeader('OpenAI-Beta', 'assistants=v2')

i'll get this error in each of request by Assistant Undefined array key "file_ids"

at this code $responseCharacters = OpenAI::threads()->createAndRun( [ 'assistant_id' => 'asst_oths*****************', 'thread' => [ 'messages' => [ [ 'role' => 'user', 'content' => "read below screenplay text carefully and return a list each of character in there is in the below screenplay in english language with this column names : Name, gender , age , description , ID in JSON format ".$request->input('screenplay_text'), ], [ 'role' => 'user', 'content' => "append all location with ID ,Time_of_date , is_exterior ,atmosphere_mood , atmosphere_visuals , description to above JSON" ], [ 'role' => 'user', 'content' => "append sequence with ID , charachters IDs (available in sequence) , location ID to above JSON" ], [ 'role' => 'user', 'content' => "append sequence_action for characters in each of sequence with id ,character_id ,dialog ,is_walking ,is_talking, is_stand ,is_ride_a_hors ,is_armed ,is_bow_active ,is_bow_hold ,is_angry ,is_normal ,is_happy ,is_friendly ,is_enemy ,start_positon_in_x_y_z (estimate it) ,end_positon_in_x_y_z (estimate it) ,start_rotation_in_x_y_z (estimate it) ,end_rotation_in_x_y_z (estimate it) ,head_look_at_point_in_x_y_z (estimate it) to above JSON" ], ], ], ]);;

Cryental commented 1 month ago

I'm getting the same thing as @ehsanwwe. Hope you can upgrade it :)

PatricioCabo commented 1 month ago

getting the same ! Thanks for the effort guys

agmike77 commented 1 month ago

in files: /vendor/openai-php/client/src/Responses/Assistants/AssistantResponse.php /vendor/openai-php/client/src/Responses/Threads/Messages/ThreadMessageResponse.php /vendor/openai-php/client/src/Responses/Threads/Runs/ThreadRunResponse.php replace this line

$attributes['file_ids']

with this one

$attributes['file_ids'] ?? []
PatricioCabo commented 1 month ago

in files: /vendor/openai-php/client/src/Responses/Assistants/AssistantResponse.php /vendor/openai-php/client/src/Responses/Threads/Messages/ThreadMessageResponse.php bitrix/vendor/openai-php/client/src/Responses/Threads/Runs/ThreadRunResponse.php replace this line

$attributes['file_ids']

with this one

$attributes['file_ids'] ?? []

This works !!! Thank you so much @agmike77 !!

nadirhamid commented 1 month ago

I am also having issues when working with assistants configured for GPT 4. It doesn't seem to work with the assistants v1 API so need a work around.

Also, I tried to just change the HTTP header so it uses assistants v2 but that resulted in some new errors. I think this upgrade would not be overly complex, although I am not sure if anyone is actively maintaining this project.

That said, this fix would be largely helpful to me and any others looking to use the newer APIs.

If theres anything I can do to make this happen let me know.

I look forward to when you integrate this to the library.

fangyuan0306 commented 1 month ago

I have now resolved the file_ids issue, but a new issue has emerged: Unhandled match case '...' {"exception":"[object] (UnhandledMatchError(code: 0): Unhandled match case '...' at .../vendor/openai-php/client/src/Responses/Threads/Runs/ThreadRunResponse.php:64)"}, I also printed out the type, and I found that in version v2, the type values have changed. The type now includes file_search, so I modified it as follows:

$tools = array_map( function (array $tool): ThreadRunResponseToolCodeInterpreter|ThreadRunResponseToolRetrieval|ThreadRunResponseToolFunction { return match ($tool['type']) { 'code_interpreter' => ThreadRunResponseToolCodeInterpreter::from($tool), 'retrieval' => ThreadRunResponseToolRetrieval::from($tool), 'function' => ThreadRunResponseToolFunction::from($tool), 'file_search' => ThreadRunResponseToolRetrieval::from($tool), default => throw new UnhandledMatchError("Unhandled match case '{$tool['type']}'"), }; }, $attributes['tools'], ); Additionally, I need to modify line 38 in vendor/openai-php/client/src/Responses/Threads/Messages/ThreadMessageResponseContentTextAnnotationFileCitation.php to:

$attributes['quote'] ?? '' Now it works, but I'm not sure if it's correct.

nunomaduro commented 1 month ago

I've just created a $12,000 a month tier, on my sponsors page, in case there a company truly relying on this package and it needs this feature urgently: https://github.com/sponsors/nunomaduro.

wishborn commented 1 month ago

Is this feature being held hostage?

jhull commented 1 month ago

There are companies that do rely on this package but for which 12k is impossible. No worries though, besides the fact that files attached to threads don't even work anyways (known bug OAI engineers are working on), you can get assistants v2 up and running just by writing your own single php page. Took a couple of hours, but it works quite well (difference is night and day with v1 assistant), so the rest of us will just have to patiently wait ...

nunomaduro commented 1 month ago

@wishborn @jhull, you can always contribute to this package instead of waiting. On our side, we will work on it once we find the time. 👍🏻

wishborn commented 1 month ago

@wishborn @jhull, you can always contribute to this package instead of waiting. On our side, we will work on it once we find the time. 👍🏻

If I knew what I was doing and wasn't homeless, I would. I'm still learning.

gehrisandro commented 1 month ago

API v2 support comes in this PR: https://github.com/openai-php/client/pull/405

Feel free to check it out and give feedback there (atm, only the vector stores API is implemented, the rest is coming the next days).

gehrisandro commented 1 month ago

Release for assistants v2 has arrived (beta). 🚀

Happy to hear your feedback before making it a stable release.

https://github.com/openai-php/client/releases/tag/v0.10.0-beta.1

arturspon commented 1 month ago

Thanks for the release @gehrisandro 🎉 I just tried the beta version, but I'm getting this error when listing thread messages:

ErrorException: Undefined array key "attachments" in file /var/www/vendor/openai-php/client/src/Responses/Threads/Messages/ThreadMessageResponse.php on line 65

#0 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(256): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'Undefined array...', '/var/www/vendor...', 65)
#1 /var/www/vendor/openai-php/client/src/Responses/Threads/Messages/ThreadMessageResponse.php(65): Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}(2, 'Undefined array...', '/var/www/vendor...', 65)
#2 /var/www/vendor/openai-php/client/src/Resources/ThreadsMessages.php(31): OpenAI\Responses\Threads\Messages\ThreadMessageResponse::from(Array, Object(OpenAI\Responses\Meta\MetaInformation))
#3 /var/www/app/Services/Chat/ChatService.php(54): OpenAI\Resources\ThreadsMessages->create('thread_3kF2toIo...', Array)
#4 /var/www/app/Http/Controllers/ChatController.php(75): App\Services\Chat\ChatService->createStreamedText(Object(App\Models\Chat), 'ol\xC3\xA1!', Array)
#5 /var/www/vendor/symfony/http-foundation/StreamedResponse.php(106): App\Http\Controllers\ChatController->App\Http\Controllers\{closure}()
#6 /var/www/vendor/symfony/http-foundation/Response.php(395): Symfony\Component\HttpFoundation\StreamedResponse->sendContent()
#7 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1172): Symfony\Component\HttpFoundation\Response->send()
#8 /var/www/public/index.php(17): Illuminate\Foundation\Application->handleRequest(Object(Illuminate\Http\Request))
#9 {main}
Nerenso commented 1 month ago

Running into the same problem as you @arturspon

Did you find any work around?

gehrisandro commented 1 month ago

Hi @arturspon, @Nerenso

Looks like you both ran into the same issue, where the request still used the v1 header.

Fixed with the new release for the Laravel Client: https://github.com/openai-php/laravel/releases/tag/v0.10.0-beta.2

If the problem still persists, please let me know.

fixating commented 1 month ago

@gehrisandro is the v2 feature coming to the next overall release? that will make a HUGE difference as it will allow us to the use the latest OpenAI GTP-4o model which is lightning fast in comparison.

slim-dg9 commented 3 weeks ago

Hi @arturspon, @Nerenso

Looks like you both ran into the same issue, where the request still used the v1 header.

Fixed with the new release for the Laravel Client: https://github.com/openai-php/laravel/releases/tag/v0.10.0-beta.2

If the problem still persists, please let me know.

@gehrisandro Can we do the same for symfony client? https://github.com/openai-php/symfony/pull/19