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

[Bug]: Undefined array key \"input\" #415

Closed eng-ahmad-sameer closed 1 month ago

eng-ahmad-sameer commented 1 month ago

Description

I am facing an issue while running I thread as a stream.

Full stack trace:

local.INFO: error {"error":"#0 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(270): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'Undefined array...', '/Users/ahmadsam...', 48)
#1 /Users/ahmadsameer/Documents/Development/crm-api/vendor/openai-php/client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeInterpreter.php(48): Illuminate\\Foundation\\Bootstrap\\HandleExceptions->Illuminate\\Foundation\\Bootstrap\\{closure}(2, 'Undefined array...', '/Users/ahmadsam...', 48)
#2 /Users/ahmadsameer/Documents/Development/crm-api/vendor/openai-php/client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseCodeToolCall.php(43): OpenAI\\Responses\\Threads\\Runs\\Steps\\ThreadRunStepResponseCodeInterpreter::from(Array)
#3 /Users/ahmadsameer/Documents/Development/crm-api/vendor/openai-php/client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseToolCallsStepDetails.php(42): OpenAI\\Responses\\Threads\\Runs\\Steps\\ThreadRunStepResponseCodeToolCall::from(Array)
#4 [internal function]: OpenAI\\Responses\\Threads\\Runs\\Steps\\ThreadRunStepResponseToolCallsStepDetails::OpenAI\\Responses\\Threads\\Runs\\Steps\\{closure}(Array)
#5 /Users/ahmadsameer/Documents/Development/crm-api/vendor/openai-php/client/src/Responses/Threads/Runs/Steps/ThreadRunStepResponseToolCallsStepDetails.php(40): array_map(Object(Closure), Array)
#6 /Users/ahmadsameer/Documents/Development/crm-api/vendor/openai-php/client/src/Responses/Threads/Runs/Steps/Delta/ThreadRunStepDeltaObject.php(39): OpenAI\\Responses\\Threads\\Runs\\Steps\\ThreadRunStepResponseToolCallsStepDetails::from(Array)
#7 /Users/ahmadsameer/Documents/Development/crm-api/vendor/openai-php/client/src/Responses/Threads/Runs/Steps/Delta/ThreadRunStepDeltaResponse.php(40): OpenAI\\Responses\\Threads\\Runs\\Steps\\Delta\\ThreadRunStepDeltaObject::from(Array)
#8 /Users/ahmadsameer/Documents/Development/crm-api/vendor/openai-php/client/src/Responses/Threads/Runs/ThreadRunStreamResponse.php(63): OpenAI\\Responses\\Threads\\Runs\\Steps\\Delta\\ThreadRunStepDeltaResponse::from(Array)
#9 /Users/ahmadsameer/Documents/Development/crm-api/vendor/openai-php/client/src/Responses/StreamResponse.php(68): OpenAI\\Responses\\Threads\\Runs\\ThreadRunStreamResponse::from(Array)
#10 /Users/ahmadsameer/Documents/Development/crm-api/app/Http/Controllers/BotChatController.php(89): OpenAI\\Responses\\StreamResponse->getIterator()
#11 /Users/ahmadsameer/Documents/Development/crm-api/vendor/symfony/http-foundation/StreamedResponse.php(106): App\\Http\\Controllers\\BotChatController->App\\Http\\Controllers\\{closure}()
#12 /Users/ahmadsameer/Documents/Development/crm-api/vendor/symfony/http-foundation/Response.php(423): Symfony\\Component\\HttpFoundation\\StreamedResponse->sendContent()
#13 /Users/ahmadsameer/Documents/Development/crm-api/app/Http/Controllers/BotChatController.php(148): Symfony\\Component\\HttpFoundation\\Response->send()
#14 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\BotChatController->runThreadAndGenerateResponse(Object(App\\Models\\BotChat), Object(App\\Supports\\OpenAIService))
#15 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\\Routing\\Controller->callAction('runThreadAndGen...', Array)
#16 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Route.php(259): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Http\\Controllers\\BotChatController), 'runThreadAndGen...')
#17 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#18 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(798): Illuminate\\Routing\\Route->run()
#19 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#20 /Users/ahmadsameer/Documents/Development/crm-api/app/Http/Middleware/EnsureActiveUserAccess.php(24): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#21 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\EnsureActiveUserAccess->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#22 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/passport/src/Http/Middleware/CheckForAnyScope.php(28): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#23 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Laravel\\Passport\\Http\\Middleware\\CheckForAnyScope->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'verified')
#24 /Users/ahmadsameer/Documents/Development/crm-api/app/Http/Middleware/LastUserActivity.php(25): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#25 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\LastUserActivity->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#26 /Users/ahmadsameer/Documents/Development/crm-api/app/Http/Middleware/SessionTimeout.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#27 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\SessionTimeout->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#28 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#29 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#30 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(126): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#31 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(57): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequest(Object(Illuminate\\Http\\Request), Object(Closure), Array)
#32 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle(Object(Illuminate\\Http\\Request), Object(Closure), '3600', '1')
#33 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(44): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#34 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Auth\\Middleware\\Authenticate->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'api')
#35 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#36 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(797): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#37 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(776): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#38 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(740): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#39 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Routing/Router.php(729): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#40 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(190): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#41 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#42 /Users/ahmadsameer/Documents/Development/crm-api/app/Http/Middleware/RequestLogger.php(12): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#43 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\RequestLogger->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#44 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#45 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#46 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#47 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#48 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#49 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#50 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#51 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#52 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#53 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#54 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#55 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#56 /Users/ahmadsameer/Documents/Development/crm-api/vendor/itsgoingd/clockwork/Clockwork/Support/Laravel/ClockworkMiddleware.php(24): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#57 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Clockwork\\Support\\Laravel\\ClockworkMiddleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#58 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#59 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#60 /Users/ahmadsameer/Documents/Development/crm-api/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(134): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#61 /Users/ahmadsameer/Documents/Development/crm-api/public/index.php(54): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#62 /Users/ahmadsameer/Documents/Development/crm-api/server.php(19): require_once('/Users/ahmadsam...')
#63 {main}"} 

Steps To Reproduce

  1. Create an assistant.
  2. Create a thread
  3. Create a message in the thread and stream the response, like below:
    
    OpenAI::threads()->messages()->create($chat->thread_id, [
    'role' => 'user',
    'content' => 'generate an excel file contain 3 rows of clients, general data',
    ]);

$stream = OpenAI::threads()->runs()->createStreamed( threadId: {your_thread_id}, parameters: [ 'assistant_id' => {your_assistant_id}, ], )

foreach ($stream as $chunk) { // code }



### OpenAI PHP Client Version

v0.9.2

### PHP Version

8.2.4

### Notes

_No response_
gehrisandro commented 1 month ago

This issue is fixed in the 0.10.x (beta) release: https://github.com/openai-php/client/releases/tag/v0.10.0-beta.1