讲师中心 微信公众号

工具推荐

视频效率加速
AniShort
AniShort

AI短剧协同制作平台

updream

一键生成高质量推广成片

Seko
Seko

AI短剧一键生成成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

Webman如何集成OpenAI接口开发智能AI助手

轻强大大_2030

轻强大大_2030

发布时间:2026-06-17 21:39:21

|

625人浏览过

|

来源于php中文网

原创

Webman命令行调用openai需绕开$connection,直接用echo或$output->writeln()输出;stream回调中禁用$connection->send(),complete回调避免检查error再发Chunk;Chat::completions()天然异步,勿加yield或co::sleep();国内访问应换兼容API地址而非改SDK;Assistant API不支持流式,需自行封装HTTP轮询。

webman如何集成openai接口开发智能ai助手

Webman命令行里调用webman/openai必须绕开$connection

命令行环境没有HTTP连接上下文,$connection对象在Command类里根本不存在——硬要new TcpConnection会卡死或报错Invalid argument。你不需要它,也不该模拟它。

真正该做的,是直接用echo或$output->writeln()输出结果,而不是往HTTP流里写Chunk。示例里那个stream回调里的echo才是正路:

['stream' => function($data) {
    echo json_encode($data, JSON_UNESCAPED_UNICODE) . "\n";
}, 'complete' => function($result) {
    echo "done. total tokens: " . ($result['usage']['total_tokens'] ?? 0) . "\n";
}]
  • stream回调里别用$connection->send(),那是控制器专属
  • complete回调里也别检查$result['error']再发Chunk,直接print_r($result)或提取关键字段
  • 如果想结构化输出,用$output->success()或$output->error()(需继承Command并注入OutputInterface)

Chat::completions()在Webman里默认就是异步的,别手动套async/await

Webman基于Workerman,所有网络I/O天然异步。你调用Chat::completions()时传的stream和complete回调,本身就是事件循环注册的监听器,不是同步阻塞等待。强行加yield或co::sleep()反而会打断流程。

常见错误是看到PHP协程文档就条件反射加go或co::create——webman/openai内部已用Workerman\Timer和ReactPHP\HttpClient封装了异步HTTP,你只管传回调。

  • 控制器里直接new Chat([...]) + completions(..., [...])即可,无需go包裹
  • 命令行里同理,但注意回调内不要依赖Request或Response对象
  • 若需并发多个请求,用array_map+多个Chat实例,别用Promise——Workerman不兼容Promise链

国内访问OpenAI官方API失败?优先换兼容地址,别改SDK源码

https://api.openai.com在国内多数环境直连超时或被重置,但webman/openai支持任意兼容OpenAI格式的API地址,包括阿里云通义、百度千帆、月之暗面等。硬改SDK的base_uri或加代理容易破坏重试逻辑。

Openai Whisper 1.0.0
Openai Whisper 1.0.0

使用 Whisper CLI 进行本地语音转文字(无需 API 密钥)

下载

正确做法是在构造Chat时直接指定api参数:

$chat = new Chat([
    'apikey' => 'sk-xxx',
    'api'    => 'https://dashscope.aliyuncs.com/compatible-mode/v1'
]);
  • 阿里云通义:用qwen-plus或qwen-max模型,api填https://dashscope.aliyuncs.com/compatible-mode/v1
  • 百度千帆:用ERNIE-Bot-4,api填https://aip.baidubce.com/rpc/2.0/ai_custom/v1
  • 自建Ollama:用llama3,api填http://localhost:11434/v1

所有兼容地址都要求Content-Type: application/json且响应结构一致,webman/openai不做额外适配就能跑通。

Assistant API不支持流式?那就别用stream回调

webman/openai当前版本(v2.3.0)只封装了/chat/completions和/images/generations等基础接口,Assistants API(/threads、/runs)需自行封装HTTP请求。它的stream参数对beta.assistants.runs.create无效——这个接口本身不返回流式chunk,而是返回run对象,后续要轮询retrieve。

如果你非要上Assistant能力,得自己用GuzzleHttp\Client或Workerman\Http\Client发请求:

$client = new \GuzzleHttp\Client();
$response = $client->post('https://api.openai.com/v1/threads', [
    'headers' => ['Authorization' => 'Bearer sk-xxx'],
    'json'    => ['messages' => [['role'=>'user','content'=>'hello']]]
]);
$thread_id = json_decode($response->getBody(), true)['id'];
  • webman/openai不提供assistant、thread、run等类,别在命名空间里找Webman\Openai\Assistant
  • 流式输出仅适用于completions和chat/completions,Assistant的run状态轮询必须用同步HTTP
  • 轮询间隔建议设为1s,避免429错误;状态为completed后,再查/threads/{id}/messages拿最终回复

真正难的不是调通接口,而是把Assistant的多步状态机(queued → in_progress → completed → failed)稳稳落地到Workerman的异步事件循环里——这里没现成轮子,得手写状态管理器。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

12504

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

7201

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2235

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

4528

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

5254

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

4131

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

5977

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

4702

2023.11.13

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

40

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ChatGPT入门手册
ChatGPT入门手册

共0课时 | 0人学习

Codex官方文档
Codex官方文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn