0

0

PHP如何调用百度文心一言_配置密钥发送请求获取智能回复【指南】

雪夜

雪夜

发布时间:2026-01-13 15:13:43

|

986人浏览过

|

来源于php中文网

原创

php调用文心一言实际是调用文心千帆api,需先用api key和secret key换取2小时有效的access_token,再在请求头携带authorization: bearer {token}调用模型接口,不可直连或误用密钥。

php如何调用百度文心一言_配置密钥发送请求获取智能回复【指南】

PHP 不能直接调用“百度文心一言”——因为百度官方没有开放名为 文心一言 的公开 API;你实际能调用的是百度智能云平台上的 文心千帆 大模型服务(如 ernie-bot-turboernie-4.0),且必须通过其 RESTful 接口 + Access Token(非固定密钥)完成认证。

为什么不能用“API Key + Secret Key”直连?

文心千帆的鉴权方式是:先用 API KeySecret Keyhttps://aip.baidubce.com/oauth/2.0/token 换取短期有效的 access_token(2 小时过期),所有模型请求必须携带该 token。不存在“永久密钥直连模型接口”的用法。

  • 直接在请求头写 Authorization: Bearer your_api_key → 返回 {"error":"invalid_request","error_description":"Invalid access token"}
  • API Key 当作 access_token 填入请求 → 返回 401 Unauthorized
  • 未刷新 token 导致连续调用失败 → 错误码 110access_token expired)

PHP 获取 access_token 的正确写法

必须用 curlfile_get_contents 发起 POST 请求到鉴权地址,并正确编码参数。注意:grant_type=client_credentials 是固定值,不能拼错。

<?php
$api_key = 'your_api_key_here';
$secret_key = 'your_secret_key_here';

$url = 'https://aip.baidubce.com/oauth/2.0/token?' . http_build_query([
    'grant_type' => 'client_credentials',
    'client_id' => $api_key,
    'client_secret' => $secret_key
]);

$options = [
    'http' => [
        'method' => 'POST',
        'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
        'content' => ''
    ]
];

$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$result = json_decode($response, true);

if (isset($result['access_token'])) {
    echo "access_token: " . $result['access_token'] . "\n";
    echo "expires_in: " . $result['expires_in'] . " seconds\n"; // 通常为 7200
} else {
    echo "获取失败:" . ($result['error_description'] ?? '未知错误');
}
?>

用 PHP 调用 ernie-bot-turbo 模型发消息

拿到 access_token 后,向 https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-bot-turbo 发送 POST 请求,body 必须是 JSON 格式,且 Content-Type 设为 application/json。常见翻车点:

Leewow
Leewow

全球首个AI造物智能体

下载

立即学习PHP免费学习笔记(深入)”;

  • 忘记在 header 中加 Authorization: Bearer {access_token}
  • http_build_query() 发送 JSON body → 接口返回 100(invalid parameter)
  • messages 数组里 role 写成 user/assistant(正确是 userassistant,但首字母小写,大小写敏感)
  • 没设置 stream=false 却按非流式解析响应 → 解析失败
<?php
$access_token = 'your_access_token_here';
$url = 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie-bot-turbo?access_token=' . $access_token;

$data = [
    'messages' => [
        ['role' => 'user', 'content' => '你好']
    ],
    'stream' => false
];

$options = [
    'http' => [
        'method' => 'POST',
        'header' => "Content-Type: application/json\r\n",
        'content' => json_encode($data)
    ]
];

$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$result = json_decode($response, true);

if (isset($result['result'])) {
    echo "回复:" . $result['result'] . "\n";
} else {
    echo "调用失败:" . ($result['error_msg'] ?? '无错误信息');
}
?>

token 缓存与自动刷新建议

每次请求都重新获取 access_token 效率低,还可能触发频率限制。生产环境应缓存 token 并检查有效期,而不是硬编码或每次都重取。

  • file_put_contents('token.json', json_encode([...])) 存本地(开发可接受)
  • 用 Redis 存 setex token_key 7000 "xxx"(推荐)
  • 发起模型请求前,先读缓存 token,若剩余有效期
  • 捕获 error_code == 110 时,立即刷新 token 并重试当前请求

真正麻烦的不是写几行 PHP,而是 token 生命周期管理、错误码对应处理、以及模型返回字段嵌套层级(比如 result 在顶层,而 ernie-4.0 可能返回 choices[0].message.content)。别跳过错误响应体直接读 result,先 var_dump 看清结构再说。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
PHP API接口开发与RESTful实践
PHP API接口开发与RESTful实践

本专题聚焦 PHP在API接口开发中的应用,系统讲解 RESTful 架构设计原则、路由处理、请求参数解析、JSON数据返回、身份验证(Token/JWT)、跨域处理以及接口调试与异常处理。通过实战案例(如用户管理系统、商品信息接口服务),帮助开发者掌握 PHP构建高效、可维护的RESTful API服务能力。

178

2025.11.26

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

452

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

331

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

454

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

183

2023.10.30

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

451

2023.10.18

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

19

2026.03.05

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号