使用PHP 调用Deepseek API

本文将介绍如何通过 PHP 调用 Deepseek API,并通过简易代码展示如何与 Deepseek 的 AI 模型进行交互,帮助开发者更好地在自己的项目中应用这一强大的工具。我们将提供一个基本的 PHP 示例,帮助你快速了解如何通过 Deepseek API 进行调用。更多内容请关注公众号:智想天开

1、设置api的api key
$_api_key = 'sk-xxxxxx';
2、设置调用地址,我们以chat completions为例。
$url = 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions';

完整的地址,可以参考openai文档中的api endpoint:https://api-docs.deepseek.com/zh-cn/

3 、设置api调用的认证信息
$header = "Content-Type: application/json\nAuthorization: Bearer $api_key\n";
4、设定所需要调用的模型
$requestObj = new stdClass();
$requestObj->model = 'deepseek-chat';

完整的模型列表可以参考文档:模型 & 价格 | DeepSeek API Docs

5、可选:设置返回结果为json格式

为了方便后续代码对返回结果进行处理,我们可以设置返回结果为json格式。如果不需要返回json格式,这一步可以忽略。注意,如果设置了返回结果为json格式,在下面的提示中,也需要明确告诉gpt以json格式返回结果。

$response_format = new stdClass();
$response_format->type = 'json_object';
$requestObj->response_format = $response_format;
6、设置deepseek的角色信息
$messages = [];
$message = new stdClass();
$message->role = 'system';
$message->content = '你是一个诗人';
$messages[] = $message;
7、设置传给gpt的内容信息
$message = new stdClass();
$message->role = 'user';
$message->content = '请写一首关于回归的诗。返回格式为json。';
$messages[] = $message;
$requestObj->messages = $messages;

注意:如果前面设置了返回格式为json,这里也需要明确要求返回格式为json。

如果内容过长,可以换行,以增强代码的可读性。换行可以使用下面的写法:

$message = new stdClass();
$message->role = 'user';
$message->content = <<<EOD
请写一首关于回归的诗。
返回格式为json。
EOD;
$messages[] = $message;
$requestObj->messages = $messages;
8、序列化请求内容,准备发送给deepseek
$request = json_encode($requestObj);
9、创建一个请求对象​​​​​​​
$opts = array(
    'http' => [
        'method' => 'POST',
        'header' => $header,
        'content' => $request,
        'timeout' => 300
    ]
);
$context = stream_context_create($opts);

在有些情况下,服务器可能缺失ca证书,或者ca证书不是最新的,导致ssl验证失败,这时我们需要更新服务器ca证书,或者干脆忽略证书检查

$opts = array(
    'http' => [
        'method' => 'POST',
        'header' => $header,
        'content' => $request,
        'timeout' => 300
    ],
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false
    ]
);
$context = stream_context_create($opts);

10、发送请求给deepseek
$response = @file_get_contents($url, false, $context);
11、对可能出现的错误进行处理
if($response === false){
  var_dump($http_response_header);

  die();
}

如果出错了,请仔细检查错误信息。注意,请求格式不对,比如模型名称写错了时,服务器可能会返回HTTP 400错误,这时需要仔细检查请求信息,并不是openai的服务器出错了。

12、反序列化返回结果,并且进行后续处理​​​​​​​
$responseObj = json_decode($response);
echo $responseObj->choices[0]->message->content;

完整的返回结果可以参考deepseek文档:首次调用 API | DeepSeek API Docs,或者直接执行var_dump($responseObj),观察其中都有哪些属性。

13、完整的代码
<?php
$api_key = 'sk-xxxxxx';
$url = 'https://api.deepseek.com/chat/completions';

$header = "Content-Type: application/json\nAuthorization: Bearer $api_key\n";

$requestObj = new stdClass();
$requestObj->model = 'deepseek-chat';

$response_format = new stdClass();
$response_format->type = 'json_object';
$requestObj->response_format = $response_format;

$messages = [];
$message = new stdClass();
$message->role = 'system';
$message->content = '你是一个诗人';
$messages[] = $message;

$message = new stdClass();
$message->role = 'user';
$message->content = <<<EOD
请写一首关于回归的诗。返回格式为json。
EOD;
$messages[] = $message;
$requestObj->messages = $messages;
$request = json_encode($requestObj);
print_r($request);

$opts = array(
    'http' => [
        'method' => 'POST',
        'header' => $header,
        'content' => $request,
        'timeout' => 300
    ],
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false
    ]
);

$context = stream_context_create($opts);
$response = @file_get_contents($url, false, $context);

//request格式不符合要求时,api会报错
if ($response === false) {
    var_dump($http_response_header);
    echo "\n\nerror\n";
    die();
}

$responseObj = json_decode($response);
echo $responseObj->choices[0]->message->content;
 14、返回结果展示

{
  "title": "归途",
  "author": "AI诗人",
  "poem": [
    "远山呼唤着归途,",
    "星辰指引着方向。",
    "岁月如歌,轻轻吟唱,",
    "归心似箭,穿越时光。",
    "",
    "踏过千山万水,",
    "只为那一抹熟悉的微笑。",
    "风雨兼程,不畏艰难,",
    "只为那一刻的拥抱。",
    "",
    "归途,是心灵的归宿,",
    "是梦开始的地方。",
    "无论走多远,",
    "家,永远是心中的灯塔。",
    "",
    "让我们放下疲惫,",
    "拥抱那份久违的温暖。",
    "归途,不仅是一段旅程,",
    "更是一次心灵的洗礼。"
  ]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值