我有一个端点,它应该向 OpenAI API 发送消息并显示响应。我正在使用 https://github.com/openai-php/client
代码看起来像这样(为了简洁而进行了修剪):
$client = OpenAI::client($OpenaiApiKey);
$message = $client->threads()->messages()->create($threadId, [
'role' => 'user',
'content' => "Option $optionId",
]);
$run = $client->threads()->runs()->retrieve(
threadId: $threadId,
runId: $runId,
);
while ($run->status != 'completed') {
sleep(1);
$run = $client->threads()->runs()->retrieve($threadId, $runId);
if($run->status == 'failed') {
echo json_encode(array('status' => 'failed', 'error' => $run->lastError));
exit;
}
if(++$retries > 20) {
echo json_encode(array('status' => 'failed', 'error' => 'Timeout waiting for response'));
exit;
}
}
$allMessages = $client->threads()->messages()->list($threadId, [
]);
print_r($allmessages);
此打印的消息列表有我发送给 API 的消息,但没有响应。如果我尝试多次运行此端点,我会在线程中获得消息的多个副本,但不会对任何消息做出响应。
为什么我的消息没有得到回复?我已经使用了在 Playground 中用于响应的助手,它始终响应“选项”文本提示。
我正在做这样的事情,我意识到你从来没有“创建”一次运行,你只是检索以前的一次。而且你的代码也帮助我解决了我的问题。
$message = $client->threads()->messages()->create(
$threadId,
[
"role" => "user",
"content" => $message
]
);
$run = $client->threads()->runs()->create($threadId, [
"assistant_id" => $assistant_id,
]);
所以你的代码实际上很好,这只是一个烦人的功能。