parentyazilim / openaci-chatbot
这是一个用于与OpenAI的API交互的PHP类,特别针对他们的聊天机器人、搜索和文本生成功能,以及使用他们的API创建和微调机器学习模型。
Requires
- php: >=7.0
- ext-json: *
This package is not auto-updated.
Last update: 2024-09-28 03:36:35 UTC
README
这是一个用于与OpenAI的API交互的PHP类,特别针对他们的聊天机器人、搜索和文本生成功能,以及使用他们的API创建和微调机器学习模型。
该类有以下公共方法
__construct($apiKey, $engineId = 'davinci')
:构造函数,接受一个API密钥和一个可选的引擎ID(默认为'davinci')。ask($question)
:用于向聊天机器人提问并获得响应的方法。search($documents, $query, $maxRerank = 200)
:使用OpenAI搜索API搜索相关文档的方法。generateText($prompt, $length = 50, $temperature = 0.7)
:使用OpenAI文本API生成文本的方法。createFineTuningSession($model, $description = '')
:使用OpenAI API创建新微调会话的方法。uploadTrainingData($sessionId, $data)
:使用OpenAI API将训练数据上传到微调会话的方法。startFineTuning($sessionId, $trainingConfig)
:使用OpenAI API开始训练微调会话的方法。checkFineTuningStatus($sessionId)
:使用OpenAI API检查微调会话状态的方法。getFineTunedModel($sessionId)
:使用OpenAI API从微调会话中获取微调模型的方法。
这些方法都通过HTTP请求与OpenAI API交互,并返回相关的PHP对象作为响应。`ask()`和`generateText()`方法接受一个作为字符串的问题或提示,并返回相应的响应或生成的文本字符串。`search()`方法接受一个要搜索的文档数组、一个搜索查询和可选的最大重排结果数,并返回一个搜索结果数组。`createFineTuningSession()`方法创建一个新的微调会话并返回其ID。`uploadTrainingData()`方法将训练数据上传到现有的微调会话并返回成功或失败。`startFineTuning()`方法使用给定的配置选项开始训练微调会话并返回成功或失败。`checkFineTuningStatus()`方法检查现有微调会话的状态并返回其状态字符串。`getFineTunedModel()`方法从现有微调会话中获取微调模型并返回其ID字符串。
OpenAI Chatbot PHP类
OpenAIChatbot
类是OpenAI API的PHP包装器。它允许您轻松使用OpenAI API来生成文本、回答问题、通过文档进行搜索以及执行模型的微调。
要求
要使用OpenAIChatbot
类,您需要
- PHP 7.3或更高版本
- 启用了
json
和openssl
扩展 - OpenAI API密钥
安装
您可以使用Composer安装OpenAIChatbot
类
composer require parentyazilim/openai-chatbot
用法
要使用OpenAIChatbot
类,您需要首先创建类的实例并提供您的OpenAI API密钥。您可以可选地指定默认引擎ID(默认为davinci
)
<?php use OpenAIChatbot\OpenAIChatbot; $openai = new OpenAIChatbot('your_api_key', 'davinci');
提问
要向OpenAI聊天机器人提问并获得响应,请使用ask()
函数。该函数接受一个参数,即要提问的问题,并返回聊天机器人的响应。
<?php $response = $openai->ask('What is the meaning of life?'); echo $response;
通过文档进行搜索
要搜索一组文档并获得最相关的结果,请使用search()
函数。该函数接受三个参数
$documents
:要搜索的文档数组,其中每个文档都是一个具有 "id" 和 "text" 键的关联数组。$query
:要使用的搜索查询。$maxRerank
(可选):要重新排序的最大结果数(默认为200)。
该函数返回一个搜索结果数组,其中每个结果都是一个具有 "document" 和 "score" 键的关联数组。
<?php $documents = [ ['id' => 'doc1', 'text' => 'The quick brown fox jumped over the lazy dog'], ['id' => 'doc2', 'text' => 'The brown fox is quick and the dog is lazy'], ['id' => 'doc3', 'text' => 'The quick brown fox is friends with the lazy dog'], ]; $results = $openai->search($documents, 'quick brown fox'); foreach ($results as $result) { echo $result['document'] . ' (' . $result['score'] . ')' . PHP_EOL; }
生成文本
要使用 OpenAI API 生成文本,请使用 generateText()
函数。该函数接受三个参数
$prompt
:用于生成文本的提示。$length
(可选):生成文本的长度(以令牌为单位,默认为50)。$temperature
(可选):生成文本的“创意”程度(介于0和1之间的值,值越高生成的文本越具创意,默认为0.7)。
该函数返回生成的文本
<?php $text = $openai->generateText('Once upon a time', 100, 0.5); echo $text;`
微调模型
要微调 OpenAI 模型,您需要首先使用 createFineTuningSession()
函数创建一个微调会话。该函数接受两个参数
$model
:用于微调的模型 ID。$description
(可选):微调会话的描述(默认为空字符串)。
该函数返回新微调会话的 ID
<?php $sessionId = $openai->createFineTuningSession('text-davinci-002', 'My fine-tuning session'); echo $sessionId;
创建微调会话后,您可以使用 uploadTrainingData()
函数上传训练数据。该函数接受两个参数
$sessionId
:微调会话的 ID。$data
:一个包含训练数据的数组,其中每个项目都是一个具有 "text" 和 "label" 键的关联数组。
该函数在成功时返回 true
,在失败时返回 false
。
<?php $data = [ ['text' => 'The quick brown fox', 'label' => 'animal'], ['text' => 'The lazy dog', 'label' => 'animal'], ['text' => 'The big red ball', 'label' => 'object'], ]; $result = $openai->uploadTrainingData($sessionId, $data); if ($result) { echo 'Training data uploaded successfully' . PHP_EOL; } else { echo 'Failed to upload training data' . PHP_EOL; }
上传训练数据后,您可以使用 startFineTuning()
函数开始微调过程。该函数接受两个参数
$sessionId
:微调会话的 ID。$trainingConfig
:一个关联数组,包含训练配置选项,包括 "epochs"、"batch_size" 和 "learning_rate"。
该函数在成功时返回 true
,在失败时返回 false
。
<?php $trainingConfig = [ 'epochs' => 2, 'batch_size' => 32, 'learning_rate' => 0.001, ]; $result = $openai->startFineTuning($sessionId, $trainingConfig); if ($result) { echo 'Fine-tuning started successfully' . PHP_EOL; } else { echo 'Failed to start fine-tuning' . PHP_EOL; }
您可以使用 checkFineTuningStatus()
函数检查微调过程的进度。该函数接受一个参数
$sessionId
:微调会话的 ID。
该函数返回微调会话的状态
<?php $status = $openai->checkFineTuningStatus($sessionId); echo 'Status: ' . $status . PHP_EOL;
最后,一旦微调过程完成,您可以使用 getFineTunedModel()
函数获取微调模型的 ID。该函数接受一个参数
$sessionId
:微调会话的 ID。
该函数返回微调模型的 ID
<?php $modelId = $openai->getFineTunedModel($sessionId); echo 'Fine-tuned model ID: ' . $modelId . PHP_EOL;
错误处理
如果在使用 OpenAIChatbot
类时发生错误,函数将返回 false
。您可以通过调用 error()
函数来检查错误。
<?php if ($openai->error()) { echo 'An error occurred: ' . $openai->errorMessage(); }
结论
OpenAIChatbot
类为 OpenAI API 提供了一个易于使用的 PHP 封装,允许您快速轻松地生成文本、回答问题、搜索文档以及微调模型。
许可
本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。