orhanerday/open-ai

PHP的OpenAI GPT-3 API客户端

资助包维护!
orhanerday

安装数: 1,726,351

依赖: 32

建议者: 1

安全性: 0

星标: 2,224

关注者: 45

分支: 286

开放问题: 22

5.2 2024-05-29 12:31 UTC

README



ChatGPT API目前支持,点击此处查看实现介绍


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

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 集成

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()方法指定Origin 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 应用程序。它允许用户与实时响应的 AI 语言模型进行聊天。聊天历史记录使用 cookies 保存,项目需要使用 API 密钥并启用 SQLite3。

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

是否流式传输部分进度。如果设置,当可用时,将作为仅数据的数据发送令牌 服务器端事件,并通过数据: [完成] 消息终止流。

$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();

上传文件

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

助手(beta版)

允许您在自己的应用程序中构建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);

线程(beta版)

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

创建线程

$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);

消息(beta版)

在线程中创建消息。

创建消息

$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);

运行(beta版)

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

创建运行

$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);

取消运行

取消状态为“in_progress”的运行。

$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