shenzhe/open-ai

PHP版的OpenAI GPT-3 API客户端

资助包维护!
orhanerday

dev-main 2024-06-07 12:25 UTC

This package is auto-updated.

Last update: 2024-09-07 12:58:31 UTC


README



ChatGPT API目前支持,点击这里获取实现介绍。


来自创作者的消息,
感谢您访问 @orhanerday/open-ai 仓库!如果您觉得这个仓库有帮助或有用,我们鼓励您在GitHub上给它 star。给仓库加star是表示您对这个项目的支持的一种方式。它还有助于提高项目的可见性,让社区知道它是有价值的。再次感谢您的支持,希望您觉得这个仓库有用!

Orhan



Latest Version on Packagist Total Downloads



orhanerday-open-ai-logo



特色展示

Jetbrains Blog

Laravel News

日思录

logo_new

与其他包的比较


关于这个包

这是一个完全开源且由社区维护的安全的PHP SDK,用于访问OpenAI GPT-3 API。

有关更多信息,您可以阅读laravel新闻 博客文章

提供免费支持。 加入我们的Discord服务器

要开始使用这个包,您首先需要熟悉OpenAI API文档示例。您还可以从我们的名为#api-support的Discord频道获取帮助

新闻

  • orhanerday/open-ai 已添加到社区库php 部分
  • orhanerday/open-ai 在 PHPStorm博客文章 中被展示,感谢JetBrains!

需要PHP 7.4+

加入我们的Discord服务器

Discord Banner 2

点击这里加入Discord服务器

支持此项目

如您所知,OpenAI PHP是一个用于OpenAI的开放源代码项目包装工具。我们依赖社区的支 持来继续开发和维护项目,您可以通过捐赠来帮助项目。

捐赠使我们能够承担费用,例如(测试)托管费用、开发工具和其他使项目顺利运行所必需的资源。每一份贡献,无论大小,都有助于我们继续改进OpenAI PHP,使其对每个人都有用。

如果您从使用OpenAI PHP中受益,并希望支持其持续发展,我们非常感谢您捐赠任何金额。您可以通过以下方式捐赠;

感谢您考虑对Orhanerday/OpenAI PHP SDK进行捐赠。您的支持非常宝贵,有助于确保项目可以继续增长和改进。

真诚地,

Orhan Erday / 创作者。

文档

请访问https://orhanerday.gitbook.io/openai-php-api-1/

端点支持

安装

您可以通过composer安装此包

composer require orhanerday/open-ai

快速入门 ⚡

在开始之前,您应该设置OPENAI_API_KEY作为环境键,并使用以下命令将OpenAI密钥设置为环境值:

Powershell

$Env:OPENAI_API_KEY = "sk-gjtv....."

Cmd

set OPENAI_API_KEY=sk-gjtv.....

Linux或macOS

export OPENAI_API_KEY=sk-gjtv.....

设置环境时遇到问题?请阅读这篇文章,或者您可以查看我StackOverflow的回答,了解Windows®环境设置的详细信息。

创建您的index.php文件,并将以下代码部分粘贴到文件中。

<?php

require __DIR__ . '/vendor/autoload.php'; // remove this line if you use a PHP Framework.

use Orhanerday\OpenAi\OpenAi;

$open_ai_key = getenv('OPENAI_API_KEY');
$open_ai = new OpenAi($open_ai_key);

$chat = $open_ai->chat([
   'model' => 'gpt-3.5-turbo',
   'messages' => [
       [
           "role" => "system",
           "content" => "You are a helpful assistant."
       ],
       [
           "role" => "user",
           "content" => "Who won the world series in 2020?"
       ],
       [
           "role" => "assistant",
           "content" => "The Los Angeles Dodgers won the World Series in 2020."
       ],
       [
           "role" => "user",
           "content" => "Where was it played?"
       ],
   ],
   'temperature' => 1.0,
   'max_tokens' => 4000,
   'frequency_penalty' => 0,
   'presence_penalty' => 0,
]);


var_dump($chat);
echo "<br>";
echo "<br>";
echo "<br>";
// decode response
$d = json_decode($chat);
// Get Content
echo($d->choices[0]->message->content);

使用以下命令运行服务器

php -S localhost:8000 -t .

NVIDIA NIM INTEGRATION

orhanerday/open-ai支持Nvidia NIM。以下示例为MixtralAI。请参阅https://build.nvidia.com/explore/discover获取更多示例。

<?php

require __DIR__ . '/vendor/autoload.php'; // remove this line if you use a PHP Framework.

use Orhanerday\OpenAi\OpenAi;

$nvidia_ai_key = getenv('NVIDIA_AI_API_KEY');
error_log($open_ai_key);
$open_ai = new OpenAi($nvidia_ai_key);
$open_ai->setBaseURL("https://integrate.api.nvidia.com");
$chat = $open_ai->chat([
    'model' => 'mistralai/mixtral-8x7b-instruct-v0.1',
    'messages' => [["role" => "user", "content" => "Write a limmerick about the wonders of GPU computing."]],
    'temperature' => 0.5,
    'max_tokens' => 1024,
    'top_p' => 1,
]);

var_dump($chat);
echo "<br>";
echo "<br>";
echo "<br>";
// decode response
$d = json_decode($chat);
// Get Content
echo ($d->choices[0]->message->content);

用法

从环境变量中加载您的密钥。

根据以下代码,$open_ai是所有open-ai操作的基变量。

use Orhanerday\OpenAi\OpenAi;

$open_ai = new OpenAi(env('OPEN_AI_API_KEY'));

请求组织

对于属于多个组织的用户,您可以通过传递一个标头来指定用于API请求的组织。这些API请求的使用将计入指定组织的订阅配额。

$open_ai_key = getenv('OPENAI_API_KEY');
$open_ai = new OpenAi($open_ai_key);
$open_ai->setORG("org-IKN2E1nI3kFYU8ywaqgFRKqi");

基本URL

您可以使用setBaseURL()方法指定原点URL;

$open_ai_key = getenv('OPENAI_API_KEY');
$open_ai = new OpenAi($open_ai_key,$originURL);
$open_ai->setBaseURL("https://ai.example.com/");

使用代理

您可以使用一些代理服务器进行API请求;

$open_ai->setProxy("http://127.0.0.1:1086");

设置标头

$open_ai->setHeader(["Connection"=>"keep-alive"]);

获取cURL请求信息

!!! 警告:如果您将此方法添加到代码中,您的API密钥将会暴露,因此在部署之前请删除该方法。请谨慎操作!

您可以在请求后获取cURL信息。

$open_ai = new OpenAi($open_ai_key);
echo $open_ai->listModels(); // you should execute the request FIRST!
var_dump($open_ai->getCURLInfo()); // You can call the request

聊天(也称为ChatGPT API)

给定一个聊天对话,模型将返回一个聊天完成响应。

$complete = $open_ai->chat([
   'model' => 'gpt-3.5-turbo',
   'messages' => [
       [
           "role" => "system",
           "content" => "You are a helpful assistant."
       ],
       [
           "role" => "user",
           "content" => "Who won the world series in 2020?"
       ],
       [
           "role" => "assistant",
           "content" => "The Los Angeles Dodgers won the World Series in 2020."
       ],
       [
           "role" => "user",
           "content" => "Where was it played?"
       ],
   ],
   'temperature' => 1.0,
   'max_tokens' => 4000,
   'frequency_penalty' => 0,
   'presence_penalty' => 0,
]);

访问元素

<?php
// Dummy Response For Chat API
$j = '
{
   "id":"chatcmpl-*****",
   "object":"chat.completion",
   "created":1679748856,
   "model":"gpt-3.5-turbo-0301",
   "usage":{
      "prompt_tokens":9,
      "completion_tokens":10,
      "total_tokens":19
   },
   "choices":[
      {
         "message":{
            "role":"assistant",
            "content":"This is a test of the AI language model."
         },
         "finish_reason":"length",
         "index":0
      }
   ]
}
';

// decode response
$d = json_decode($j);

// Get Content
echo($d->choices[0]->message->content);

相关:ChatGPT克隆项目

完成

给定一个提示,模型将返回一个或多个预测的完成内容,还可以返回每个位置替代标记的概率。

$complete = $open_ai->completion([
   'model' => 'gpt-3.5-turbo-instruct',
   'prompt' => 'Hello',
   'temperature' => 0.9,
   'max_tokens' => 150,
   'frequency_penalty' => 0,
   'presence_penalty' => 0.6,
]);

流示例

这个功能可能听起来与ChatGPT相似。

ChatGPT克隆项目

演示视频

Isimsiz.video.Clipchamp.ile.yapildi.mp4

ChatGPT 克隆是一个简单的基于 OpenAI 库和用 PHP 构建的 Web 应用程序。它允许用户与一个实时响应的人工智能语言模型进行聊天。聊天历史记录使用 Cookie 保存,该项目需要使用 API 密钥并启用 SQLite3。

ChatGPT 克隆仓库的 URL:https://github.com/orhanerday/ChatGPT

是否回传部分进度。如果设置,则当数据可用时,将以数据-only 服务器发送事件 的形式发送标记,并以 data: [DONE] 消息终止流。

$open_ai = new OpenAi(env('OPEN_AI_API_KEY'));

$opts = [
   'prompt' => "Hello",
   'temperature' => 0.9,
   "max_tokens" => 150,
   "frequency_penalty" => 0,
   "presence_penalty" => 0.6,
   "stream" => true,
];

header('Content-type: text/event-stream');
header('Cache-Control: no-cache');

$open_ai->completion($opts, function ($curl_info, $data) {
   echo $data . "<br><br>";
   echo PHP_EOL;
   ob_flush();
   flush();
   return strlen($data);
});

将此部分添加到 HTML 的 <body>

<div id="divID">Hello</div>
<script>
   var eventSource = new EventSource("/");
   var div = document.getElementById('divID');


   eventSource.onmessage = function (e) {
      if(e.data == "[DONE]")
      {
          div.innerHTML += "<br><br>Hello";
      }
       div.innerHTML += JSON.parse(e.data).choices[0].text;
   };
   eventSource.onerror = function (e) {
       console.log(e);
   };
</script>

您应该看到视频中类似的结果;

stream-event.mp4

编辑

为提供的输入、指令和参数创建一个新的编辑

   $result = $open_ai->createEdit([
       "model" => "text-davinci-edit-001",
       "input" => "What day of the wek is it?",
       "instruction" => "Fix the spelling mistakes",
   ]);

图像(DALL·E)

仓库 中提供了所有 DALL·E 示例。

给定一个提示,模型将返回一个或多个作为 URL 或 base64 编码的生成的图像。

创建图像

根据提示创建图像。

$complete = $open_ai->image([
   "prompt" => "A cat drinking milk",
   "n" => 1,
   "size" => "256x256",
   "response_format" => "url",
]);

创建图像编辑

根据原始图像和提示创建编辑或扩展的图像。

您需要 HTML 上传进行图像编辑或变异?请查看 DALL·E 示例

$otter = curl_file_create(__DIR__ . './files/otter.png');
$mask = curl_file_create(__DIR__ . './files/mask.jpg');

$result = $open_ai->imageEdit([
    "image" => $otter,
    "mask" => $mask,
    "prompt" => "A cute baby sea otter wearing a beret",
    "n" => 2,
    "size" => "1024x1024",
]);

创建图像变体

创建给定图像的变异。

$otter = curl_file_create(__DIR__ . './files/otter.png');

$result = $open_ai->createImageVariation([
    "image" => $otter,
    "n" => 2,
    "size" => "256x256",
]);

搜索

(已弃用)

此端点已弃用,将于 2022 年 12 月 3 日删除。OpenAI 开发了性能更好的新方法。了解更多。

给定一个查询和一组文档或标签,模型将根据其与提供的查询的语义相似度对每个文档进行排序。

$search = $open_ai->search([
    'engine' => 'ada',
    'documents' => ['White House', 'hospital', 'school'],
    'query' => 'the president',
]);

嵌入

获取给定输入的向量表示,可以轻松由机器学习模型和算法消费。

相关指南:嵌入

创建嵌入

$result = $open_ai->embeddings([
    "model" => "text-similarity-babbage-001",
    "input" => "The food was delicious and the waiter..."
]);

答案

(已弃用)

此端点已弃用,将于 2022 年 12 月 3 日删除。我们开发了性能更好的新方法。了解更多。

给定一个问题、一组文档和一些示例,API 将根据文档集中的信息生成对该问题的答案。这对于在真实来源(如公司文档或知识库)上的问答应用非常有用。

$answer = $open_ai->answer([
  'documents' => ['Puppy A is happy.', 'Puppy B is sad.'],
  'question' => 'which puppy is happy?',
  'search_model' => 'ada',
  'model' => 'curie',
  'examples_context' => 'In 2017, U.S. life expectancy was 78.6 years.',
  'examples' => [['What is human life expectancy in the United States?', '78 years.']],
  'max_tokens' => 5,
  'stop' => ["\n", '<|endoftext|>'],
]);

分类

(已弃用)

此端点已弃用,将于 2022 年 12 月 3 日删除。OpenAI 开发了性能更好的新方法。了解更多。

给定一个查询和一组标记示例,模型将预测查询最可能的标签。可作为任何机器学习分类或文本到标签任务的直接替换。

$classification = $open_ai->classification([
   'examples' => [
       ['A happy moment', 'Positive'],
       ['I am sad.', 'Negative'],
       ['I am feeling awesome', 'Positive'],
   ],
   'labels' => ['Positive', 'Negative', 'Neutral'],
   'query' => 'It is a raining day =>(',
   'search_model' => 'ada',
   'model' => 'curie',
]);

内容审查

给定一个输入文本,模型将判断其是否违反 OpenAI 的内容政策。

$flags = $open_ai->moderation([
    'input' => 'I want to kill them.'
]);

了解更多关于内容审查的信息:OpenAI 审查

列出引擎

(已弃用)

引擎端点已弃用。请使用它们的替代品,模型,了解详细信息。了解更多

列出当前可用的引擎,并提供有关每个引擎的基本信息,例如所有者和可用性。

$engines = $open_ai->engines();

音频

文本到语音(TTS)

$result = $open_ai->tts([
    "model" => "tts-1", // tts-1-hd
    "input" => "I'm going to use the stones again. Hey, we'd be going in short-handed, you know",
    "voice" => "alloy", // echo, fable, onyx, nova, and shimmer
]);

// Save audio file
file_put_contents('tts-result.mp3', $result);

创建转录

将音频转录成输入语言。

$c_file = curl_file_create(__DIR__ . '/files/en-marvel-endgame.m4a');

$result = $open_ai->transcribe([
    "model" => "whisper-1",
    "file" => $c_file,
]);

响应

{
  "text": "I'm going to use the stones again. Hey, we'd be going in short-handed, you know. Look, he's still got the stones, so... So let's get them. Use them to bring everyone back. Just like that? Yeah, just like that. Even if there's a small chance that we can undo this, I mean, we owe it to everyone who's not in this room to try. If we do this, how do we know it's going to end any differently than it did before? Because before you didn't have me. Hey, little girl, everybody in this room is about that superhero life. And if you don't mind my asking, where the hell have you been all this time? There are a lot of other planets in the universe. But unfortunately, they didn't have you guys. I like this one. Let's go get this son of a bitch."
}

创建翻译

将音频翻译成英语。

由于著名的科学YouTuber Barış Özcan,我使用土耳其语语音进行翻译

$c_file = curl_file_create(__DIR__ . '/files/tr-baris-ozcan-youtuber.m4a');

$result = $open_ai->translate([
    "model" => "whisper-1",
    "file" => $c_file,
]);

响应

{
  "text": "GPT-3. Last month, the biggest leap in the world of artificial intelligence in recent years happened silently. Maybe the biggest leap of all time. GPT-3's beta version was released by OpenAI. When you hear such a sentence, you may think, what kind of leap is this? But be sure, this is the most advanced language model with the most advanced language model with the most advanced language ability. It can answer these artificial intelligence questions, it can translate and even write poetry. Those who have gained access to the API or API of GPT-3 have already started to make very interesting experiments. Let's look at a few examples together. Let's start with an example of aphorism. This site produces beautiful words that you can tweet. Start to actually do things with your words instead of just thinking about them."
}

需要通过HTML上传音频?请查看本节并更改API引用。例如

...
    echo $open_ai->translate(
        [
            "purpose" => "answers",
            "file" => $c_file,
        ]
    );
...
// OR
...
    echo $open_ai->transcribe(
        [
            "purpose" => "answers",
            "file" => $c_file,
        ]
    );
...

文件

文件用于上传文档,这些文档可以在答案、搜索和分类等各个功能中使用

列出文件

返回属于用户组织的文件列表。

$files = $open_ai->listFiles();

上传文件

上传包含要跨各种端点/功能使用的文档的文件。目前,一个组织上传的所有文件的大小可高达1 GB。如需提高存储限制,请联系OpenAI。

$c_file = curl_file_create(__DIR__ . 'files/sample_file_1.jsonl');
$result = $open_ai->uploadFile([
            "purpose" => "answers",
            "file" => $c_file,
]);

通过HTML表单上传文件

<form action="index.php" method="post" enctype="multipart/form-data">
    Select file to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload File" name="submit">
</form>
<?php
require __DIR__ . '/vendor/autoload.php';

use Orhanerday\OpenAi\OpenAi;

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    ob_clean();
    $open_ai = new OpenAi(env('OPEN_AI_API_KEY'));
    $tmp_file = $_FILES['fileToUpload']['tmp_name'];
    $file_name = basename($_FILES['fileToUpload']['name']);
    $c_file = curl_file_create($tmp_file, $_FILES['fileToUpload']['type'], $file_name);

    echo "[";
    echo $open_ai->uploadFile(
        [
            "purpose" => "answers",
            "file" => $c_file,
        ]
    );
    echo ",";
    echo $open_ai->listFiles();
    echo "]";

}

删除文件

$result = $open_ai->deleteFile('file-xxxxxxxx');

检索文件

$file = $open_ai->retrieveFile('file-xxxxxxxx');

检索文件内容

$file = $open_ai->retrieveFileContent('file-xxxxxxxx');

微调

管理微调作业以定制模型以适应您的特定训练数据。

创建微调

$result = $open_ai->createFineTune([
       "model" => "gpt-3.5-turbo-1106",
       "training_file" => "file-U3KoAAtGsjUKSPXwEUDdtw86",
]);

列出微调

$fine_tunes = $open_ai->listFineTunes();

检索微调

$fine_tune = $open_ai->retrieveFineTune('ft-AF1WoRqd3aJAHsqc9NY7iL8F');

取消微调

$result = $open_ai->cancelFineTune('ft-AF1WoRqd3aJAHsqc9NY7iL8F');

列出微调事件

$fine_tune_events = $open_ai->listFineTuneEvents('ft-AF1WoRqd3aJAHsqc9NY7iL8F');

删除微调模型

$result = $open_ai->deleteFineTune('curie:ft-acmeco-2021-03-03-21-44-20');

检索引擎

(已弃用)

检索引擎实例,提供有关引擎的基本信息,例如所有者和可用性。

$engine = $open_ai->engine('davinci');

模型

列出和描述API中可用的各种模型。

列出模型

列出当前可用的模型,并提供了有关每个模型的基本信息,例如所有者和可用性。

$result = $open_ai->listModels();

检索模型

检索模型实例,提供有关模型的基本信息,例如所有者和权限。

$result = $open_ai->retrieveModel("text-ada-001");

打印结果 $search

echo $search;

助手(测试版)

允许您在自己的应用程序内构建AI助手。

创建助手

使用模型和说明创建一个助手。

$data = [
    'model' => 'gpt-3.5-turbo',
    'name' => 'my assistant',
    'description' => 'my assistant description',
    'instructions' => 'you should cordially help me',
    'tools' => [],
    'file_ids' => [],
];

$assistant = $open_ai->createAssistant($data);

检索助手

$assistantId = 'asst_zT1LLZ8dWnuFCrMFzqxFOhzz';

$assistant = $open_ai->retrieveAssistant($assistantId);

修改助手

$assistantId = 'asst_zT1LLZ8dWnuFCrMFzqxFOhzz';
$data = [
    'name' => 'my modified assistant',
    'instructions' => 'you should cordially help me again',
];

$assistant = $open_ai->modifyAssistant($assistantId, $data);

删除助手

$assistantId = 'asst_DgiOnXK7nRfyvqoXWpFlwESc';

$assistant = $open_ai->deleteAssistant($assistantId);

列出助手

返回助手列表。

$query = ['limit' => 10];

$assistants = $open_ai->listAssistants($query);

创建助手文件

通过将文件附加到助手创建助手文件。

$assistantId = 'asst_zT1LLZ8dWnuFCrMFzqxFOhzz';
$fileId = 'file-jrNZZZBAPGnhYUKma7CblGoR';

$file = $open_ai->createAssistantFile($assistantId, $fileId);

检索助手文件

$assistantId = 'asst_zT1LLZ8dWnuFCrMFzqxFOhzz';
$fileId = 'file-jrNZZZBAPGnhYUKma7CblGoR';

$file = $open_ai->retrieveAssistantFile($assistantId, $fileId);

删除助手文件

$assistantId = 'asst_zT1LLZ8dWnuFCrMFzqxFOhzz';
$fileId = 'file-jrNZZZBAPGnhYUKma7CblGoR';

$file = $open_ai->deleteAssistantFile($assistantId, $fileId);

列出助手文件

返回助手文件列表。

$assistantId = 'asst_zT1LLZ8dWnuFCrMFzqxFOhzz';
$query = ['limit' => 10];

$files = $open_ai->listAssistantFiles($assistantId, $query);

线程(测试版)

创建助手可以与之交互的线程。

创建线程

$data = [
    'messages' => [
        [
            'role' => 'user',
            'content' => 'Hello, what is AI?',
            'file_ids' => [],
        ],
    ],
];

$thread = $open_ai->createThread($data);

检索线程

$threadId = 'thread_YKDArENVWFDO2Xz3POifFYlp';

$thread = $open_ai->retrieveThread($threadId);

修改线程

$threadId = 'thread_YKDArENVWFDO2Xz3POifFYlp';
$data = [
    'metadata' => ['test' => '1234abcd'],
];

$thread = $open_ai->modifyThread($threadId, $data);

删除线程

$threadId = 'thread_YKDArENVWFDO2Xz3POifFYlp';

$thread = $open_ai->deleteThread($threadId);

消息(测试版)

在线程中创建消息。

创建消息

$threadId = 'thread_YKDArENVWFDO2Xz3POifFYlp';
$data = [
    'role' => 'user',
    'content' => 'How does AI work? Explain it in simple terms.',
];

$message = $open_ai->createThreadMessage($threadId, $data);

检索消息

$threadId = 'thread_d86alfR2rfF7rASyV4V7hicz';
$messageId = 'msg_d37P5XgREsm6BItOcppnBO1b';

$message = $open_ai->retrieveThreadMessage($threadId, $messageId);

修改消息

$threadId = 'thread_d86alfR2rfF7rASyV4V7hicz';
$messageId = 'msg_d37P5XgREsm6BItOcppnBO1b';
$data = [
    'metadata' => ['test' => '1234abcd'],
];

$message = $open_ai->modifyThreadMessage($threadId, $messageId, $data);

列出消息

返回给定线程的消息列表。

$threadId = 'thread_d86alfR2rfF7rASyV4V7hicz';
$query = ['limit' => 10];

$messages = $open_ai->listThreadMessages($threadId, $query);

检索消息文件

$threadId = 'thread_d86alfR2rfF7rASyV4V7hicz';
$messageId = 'msg_CZ47kAGZugAfeHMX6bmJIukP';
$fileId = 'file-CRLcY63DiHphWuBrmDWZVCgA';

$file = $open_ai->retrieveMessageFile($threadId, $messageId, $fileId);

列出消息文件

返回消息文件列表。

$threadId = 'thread_d86alfR2rfF7rASyV4V7hicz';
$messageId = 'msg_CZ47kAGZugAfeHMX6bmJIukP';
$query = ['limit' => 10];

$files = $open_ai->listMessageFiles($threadId, $messageId, $query);

运行(测试版)

表示在线程上的执行运行。

创建运行

$threadId = 'thread_d86alfR2rfF7rASyV4V7hicz';
$data = ['assistant_id' => 'asst_zT1LLZ8dWnuFCrMFzqxFOhzz'];

$run = $open_ai->createRun($threadId, $data);

检索运行

$threadId = 'thread_JZbzCYpYgpNb79FNeneO3cGI';
$runId = 'run_xBKYFcD2Jg3gnfrje6fhiyXj';

$run = $open_ai->retrieveRun($threadId, $runId);

修改运行

$threadId = 'thread_JZbzCYpYgpNb79FNeneO3cGI';
$runId = 'run_xBKYFcD2Jg3gnfrje6fhiyXj';
$data = [
    'metadata' => ['test' => 'abcd1234'],
];

$run = $open_ai->modifyRun($threadId, $runId, $data);

列出运行

返回属于线程的运行列表。

$threadId = 'thread_JZbzCYpYgpNb79FNeneO3cGI';
$query = ['limit' => 10];

$runs = $open_ai->listRuns($threadId, $query);

提交工具输出

当运行状态为:"requires_action" 且 required_action.type 是 submit_tool_outputs 时,此端点可用于提交工具调用的输出,一旦它们全部完成。所有输出必须在单个请求中提交。

$threadId = 'thread_JZbzCYpYgpNb79FNeneO3cGI';
$runId = 'run_xBKYFcD2Jg3gnfrje6fhiyXj';
$outputs = [
    'tool_outputs' => [
        ['tool_call_id' => 'call_abc123', 'output' => '28C'],
    ],
];

$run = $open_ai->submitToolOutputs($threadId, $runId, $outputs);

取消运行

取消"进行中"的运行。

$threadId = 'thread_JZbzCYpYgpNb79FNeneO3cGI';
$runId = 'run_xBKYFcD2Jg3gnfrje6fhiyXj';

$run = $open_ai->cancelRun($threadId, $runId);

创建线程和运行

在一个请求中创建线程并运行它。

$data = [
    'assistant_id' => 'asst_zT1LLZ8dWnuFCrMFzqxFOhzz',
    'thread' => [
        'messages' => [
            [
                'role' => 'user',
                'content' => 'Hello, what is AI?',
                'file_ids' => [],
            ],
        ],
    ],
];

$run = $open_ai->createThreadAndRun($data);

检索运行步骤

检索运行的执行步骤。

$threadId = 'thread_JZbzCYpYgpNb79FNeneO3cGI';
$runId = 'run_xBKYFcD2Jg3gnfrje6fhiyXj';
$stepId = 'step_kwLG0vPQjqVyQHVoL7GVK3aG';

$step = $open_ai->retrieveRunStep($threadId, $runId, $stepId);

列出运行步骤

返回属于运行的运行步骤列表。

$threadId = 'thread_JZbzCYpYgpNb79FNeneO3cGI';
$runId = 'run_xBKYFcD2Jg3gnfrje6fhiyXj';
$query = ['limit' => 10];

$steps = $open_ai->listRunSteps($threadId, $runId, $query);

测试

运行所有测试

composer test

仅运行大多数用户适用的测试(排除需要缺失文件夹或击中不再对大多数用户可用的弃用端点的测试)

./vendor/bin/pest --group=working

变更日志

请参阅变更日志以了解最近发生了什么变化。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请向orhanerday@gmail.com报告安全漏洞。

致谢

许可

MIT许可(MIT)。请参阅许可文件以获取更多信息。

捐赠

Buy Me A Coffee

星标历史

Star History Chart