client icon indicating copy to clipboard operation
client copied to clipboard

[improvement]: No support for assistant version v2

Open ks-dipeshc opened this issue 1 year ago • 14 comments

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

ks-dipeshc avatar Apr 24 '24 12:04 ks-dipeshc

Going to add support for v2 asap.

gehrisandro avatar Apr 24 '24 18:04 gehrisandro

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

jhull avatar Apr 25 '24 00:04 jhull

Please hurry, I found some issues with v1

fangyuan0306 avatar Apr 29 '24 11:04 fangyuan0306

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.

Jamz1Santos avatar May 01 '24 19:05 Jamz1Santos

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

ircykk avatar May 06 '24 16:05 ircykk

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

subet avatar May 07 '24 13:05 subet

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.

wishborn avatar May 07 '24 19:05 wishborn

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

nunomaduro avatar May 08 '24 20:05 nunomaduro

Thanks @nunomaduro ! We will...

subet avatar May 08 '24 21:05 subet

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" ], ], ], ]);;

ehsanwwe avatar May 14 '24 06:05 ehsanwwe

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

Cryental avatar May 14 '24 10:05 Cryental

getting the same ! Thanks for the effort guys

PatricioCabo avatar May 14 '24 11:05 PatricioCabo

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'] ?? []

agmike77 avatar May 14 '24 12:05 agmike77

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 !!

PatricioCabo avatar May 14 '24 12:05 PatricioCabo

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.

nadirhamid avatar May 16 '24 18:05 nadirhamid

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.

fangyuan0306 avatar May 17 '24 15:05 fangyuan0306

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.

nunomaduro avatar May 22 '24 22:05 nunomaduro

Is this feature being held hostage?

wishborn avatar May 22 '24 23:05 wishborn

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 ...

jhull avatar May 23 '24 00:05 jhull

@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. 👍🏻

nunomaduro avatar May 23 '24 08:05 nunomaduro

@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.

wishborn avatar May 23 '24 14:05 wishborn

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 avatar May 24 '24 22:05 gehrisandro

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

gehrisandro avatar May 27 '24 20:05 gehrisandro

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}

arturspon avatar May 28 '24 14:05 arturspon

Running into the same problem as you @arturspon

Did you find any work around?

Nerenso avatar May 28 '24 20:05 Nerenso

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 avatar May 28 '24 21:05 gehrisandro

@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.

fixating avatar May 31 '24 18:05 fixating

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

slim-dg9 avatar Jun 10 '24 10:06 slim-dg9

@gehrisandro I still see this issue intermittently, sometimes the attachments attribute seems to be missing from thread message objects; from my quick looking at the log output, this appears to happen on processing the response to a createThreadMessage call, but I'll keep looking.

Since OpenAI is moving quickly with their API (well, just about anything actually..) might it make sense to be a bit more lenient in processing responses? Null coalescing would indeed be a good way to prevent this issue from happening; judging from the number of open issues and PRs, the maintainers seem to be preoccupied with other projects right now, so being more liberal in response parsing might alleviate the support burden for this library a bit?

Radiergummi avatar Jul 18 '24 06:07 Radiergummi

You're better off just building your own...that's what I ended up doing. OpenAI changes things so much (and sometimes don't even put in the docs!) that you'll save yourself a ton of headaches building your own integration (that's what I ended up doing).

jhull avatar Jul 23 '24 23:07 jhull