blinq / openai
OpenAI API的PHP库包装器。
Requires
- php: >=8.1
- ext-json: *
README
(由ChatGPT编写)
这是一个用于与语言学习模型(LLMs)交互的库,重点在于AI驱动的聊天功能。该库目前支持OpenAI的GPT-3.5-turbo,但也可扩展以支持其他LLMs。
特性
-
跨API兼容性:该库旨在与不同的语言学习模型一起工作,包括OpenAI的GPT-3.5-turbo。
-
易于使用:通过简单的配置和直观的API,该库使开发者能够轻松地与复杂的语言学习模型交互。
-
流支持:该库提供流功能,允许实时与语言学习模型交互。
-
聊天历史:该库会维护聊天会话的历史记录,可随时检索和分析。
-
您可以通过扩展
ApiClient
类并实现所需的方法来添加对其他AI提供商的支持。 -
错误处理:该库提供强大的错误处理功能,以应对与语言学习模型交互过程中可能遇到的问题。
-
文档:提供全面的文档,以指导开发者使用该库。
-
社区支持:可以在GitHub仓库中提出问题和功能请求,活跃的社区欢迎讨论和改进。
-
许可证:该库是开源的,并使用MIT许可证。
-
支持未来的AI模型:该库的架构设计可无缝支持任何未来的语言学习模型。
-
该库代码清晰、结构良好,并包含注释以增强可读性。
入门
首先,您需要在PHP项目中安装该库。
composer require blinq/openai
用法
与OpenAI的GPT-3.5-turbo进行聊天
您需要使用ApiClient
配置初始化一个客户端对象。以下示例展示了与OpenAI的GPT-3.5-turbo的聊天会话。
<?php use Blinq\LLM\Config\ApiConfig; use Blinq\LLM\Entities\ChatMessage; use Blinq\LLM\Client; $config = new ApiConfig('openai', 'your-api-key'); $client = new Client($config); // Set the system message. This is optional. $client->setSystemMessage("You are a nice chatbot"); // User message $client->chat("Hello, how are you?"); // Get the last message $message = $client->getLastMessage(); echo $message->content; // Prints "I am fine, thank you. How are you?" // Get the chat history $history = $client->getHistory(); foreach ($history as $message) { echo $message->content; }
默认情况下,客户端会保存聊天会话的历史记录。您可以使用getHistory()
方法检索历史记录。历史记录是一个包含以下属性的ChatMessage
对象数组:
content
:消息的内容role
:消息的角色(用户或系统)
您可以使用resetHistory()
方法重置聊天历史记录。
或者使用getLastMessageAndClearHistory()
方法获取最后一条消息并清除历史记录。
使用流进行聊天
如果使用流选项,以下示例展示了如何添加处理聊天消息流的处理程序。
<?php use Blinq\LLM\Config\ApiConfig; use Blinq\LLM\Entities\ChatStream; use Blinq\LLM\Client; $config = new ApiConfig('openai', 'your-api-key'); $client = new Client($config); $client->addStreamHandler(function (ChatStream $stream) { // Handle the stream data echo $stream->getMessage()?->content; // Prints the partial message content // The $stream object has a 'done' property to check if the stream is done if ($stream->done) { // Do something when the stream is done } }); $client->chat("Hello, how are you?", "user", ['stream' => true]);
自定义
ApiClient
类是抽象的,可以扩展以创建不同API的定制驱动程序。
当前实现适用于OpenAI,但如果您想使用不同的AI提供商,可以创建一个新的类,它扩展ApiClient
并实现所需的方法(如chat()
、completion()
等)。
对于任何问题或额外功能,请随时在GitHub仓库中提交问题。
许可证
本项目采用MIT许可证。有关详细信息,请参阅LICENSE文件。