everstu/open-ai

PHP 开放的 OpenAI GPT-3 API 客户端

资助包维护!
orhanerday

1.1 2024-08-01 01:31 UTC

This package is auto-updated.

Last update: 2024-10-01 02:20:05 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 频道获取帮助。

新闻

需要 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 everstu/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/v1");
$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/v1");

使用代理

您可以使用一些代理服务器来请求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-Clone 仓库的网址 https://github.com/orhanerday/ChatGPT

是否流式传输部分进度。如果设置,当可用时,将作为仅数据 服务器发送事件 发送标记,通过 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 开发了性能更好的新方法。了解更多。

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

$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."
}

创建翻译

将音频翻译成英语。

我使用土耳其语语音进行翻译,归功于著名的科学YouTube博主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