为orhanerday提供的openai php sdk
This package is auto-updated.
Last update: 2024-09-28 09:30:13 UTC
README
ChatGPT API目前支持,点击此处获取实现介绍。
创作者的信息:
感谢您访问 @orhanerday/open-ai 仓库!如果您认为这个仓库很有用或很有价值,我们鼓励您在GitHub上为其 star。为仓库star是一种表达对项目支持的方式。它也有助于提高项目的可见性,并让社区知道它是有价值的。再次感谢您的支持,我们希望您觉得这个仓库很有用!
Orhan
特色内容
与其他包的比较
关于此包
这是一个完全开源且安全的社区维护的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服务器
支持此项目
如您所知,OpenAI PHP是一个用于OpenAI的开源项目包装工具。我们依赖于社区的支持来继续开发和维护项目,而您可以通过捐款来帮助的方式之一。
捐款使我们能够支付诸如托管费用(测试)、开发工具和其他必要资源等费用,以保持项目平稳运行。每一份贡献,无论大小,都有助于我们继续改进OpenAI PHP。
如果您通过使用OpenAI PHP而受益,并希望支持其持续开发,我们将非常感谢任何金额的捐款。您可以通过以下方式捐款:
- 买我一杯咖啡
- Patreon
- 点击此处获取Coinbase QR Bitcoin > 34w2DftWGkDqDbYMixkmdWWMLmaP9uTRz7
- 点击此处获取Coinbase QR Dogecoin > DHiqcZox9M8kYDn7BkesnN6Z2kJ7dYG9Lc
- 点击此处获取Coinbase QR Ethereum > 0x135E2D5d7AC40c6850f844BA589D68e91a268Ceb
感谢您考虑对Orhanerday/OpenAI PHP SDK进行捐款。您的支持非常宝贵,有助于确保项目可以继续成长和改进。
此致
Orhan Erday / 创作者。
端点支持
- 聊天
- 模型
- 完成
- 编辑
- 图片
- 嵌入
- 音频
- 文件
- 微调
- 审查
引擎(已弃用)
安装
您可以通过 composer 安装此软件包
composer require glock-fei/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 .
用法
从环境变量中加载您的密钥。
根据以下代码
$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' => 'text-davinci-002', '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();
音频
创建转录
将音频转录为输入语言。
$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([ "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;
测试
运行所有测试
composer test
仅运行对大多数用户有效的测试(排除那些需要缺失文件夹或那些撞击已弃用的端点不再对大多数用户可用的测试)
./vendor/bin/pest --group=working
变更日志
请参阅变更日志获取最近更改的更多信息。
贡献
请参阅贡献指南获取详细信息。
安全漏洞
请向orhanerday@gmail.com报告安全漏洞
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。