三步接入DeepSeek智能对话API:PHP代码实现与响应解析

概述

这篇技术博客提供了两方面的实用指南:首先,详细介绍了如何接入DeepSeek智能对话API,涵盖创建API Key、PHP代码实现请求封装及返回结果解析,示例代码清晰展示了请求参数与错误处理逻辑,并附有响应结构说明,内容简明实用,兼顾代码示例与系统配置,适合开发者快速实现API集成或排查环境问题,提升开发效率。

实践步骤

1、去DeepSeek的开放平台,创建API Key 保存好,代码接入的时候需要使用,另外提醒一下需要充值,如果尝试一下充10块钱就可以了。

2、DeepSeek的接入超级简单,实例中给出了Curl方式、Python、和Nodejs的方式进行通信,PHP语言封装一个Curl请求的参数即可。

php 复制代码
function callDeepSeekApi($userMessage = ''): string
{
    $apiKey = Env::get("DeepSeek.keys");
    $url = 'https://api.deepseek.com/chat/completions';
    $headers = [
        'Content-Type: application/json',
        'Authorization: Bearer ' . $apiKey
    ];
    $data = [
        'model' => 'deepseek-chat',
        'messages' => [
            [
                'role' => 'system',
                'content' => 'You are a helpful assistant.'
            ],
            [
                'role' => 'user',
                'content' => $userMessage
            ]
        ],
        'stream' => false
    ];
    $dataString = json_encode($data);
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $response = curl_exec($ch);
    $errorCode = curl_errno($ch);
    if (!$errorCode) {
        $errorMessage = curl_error($ch);
        echo 'Curl error: ' . $errorCode . ' - ' . $errorMessage . PHP_EOL;
    }
    return $response;
}

请求代码说明:

  • $apiKey = Env::get("DeepSeek.keys"); 创建应用的Key
  • $userMessage 问题的关键字
  • $errorCode 、$errorMessage 捕捉到的Curl错误信息和异常

返回信息说明:返回信息的content就是DeepSeek对话返回的结果,需要哪些字段根据自己的需要进行封装即可。

json 复制代码
{
    "id": "d12f6296-f6f0-4e53-9e6f-62853dffde11",
    "object": "chat.completion",
    "created": 1743917411,
    "model": "deepseek-chat",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "《将进酒》《蜀道难》等作,以奇绝想象、奔放句式为魂,八言诗体虽非太白常用,然其神韵可试摹之。今仿其\"黄河之水天上来\"之恣肆、\"仰天大笑出门去\"之疏狂,作八言律一首,谨供一哂:\n\n**《醉邀天山月歌》**\n\n携青崖白鹿踏云而行兮, \n揽九霄银河倾作酒卮。 \n唤昆仑雪魄同斟北斗兮, \n笑蓬莱仙翁不解剑痴。 \n长风万里吹散浮名去矣, \n大壑千寻容我醉眠之。 \n待邀天山明月共骑鲸背, \n直向扶桑树下折珊瑚枝。\n\n\n注:此诗尝试融合李白\"仙人抚我顶,结发受长生\"的游仙意象、\"我醉欲眠卿且去\"的率真性情。首联化用《梦游天姥吟留别》\"脚著谢公屐\"的登云姿态,尾联呼应《古风》\"吾将营丹砂,永与世人别\"的出世遐想,八言长句较七言更显跌宕,略得谪仙三分疏狂气。"
            },
            "logprobs": null,
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 22,
        "completion_tokens": 276,
        "total_tokens": 298,
        "prompt_tokens_details": {
            "cached_tokens": 0
        },
        "prompt_cache_hit_tokens": 0,
        "prompt_cache_miss_tokens": 22
    },
    "system_fingerprint": "fp_3d5141a69a_prod0225"
}

其他

解决VMware Fusion 虚拟机时间不同步的问题

VMware Fusion 虚拟机和宿主机系统时间不同步的问题困扰我很久了,正好在这里一起进行一次记录一下,镜像是Mac的CentOS Stream 9,如果想查询系统的版本信息,可以执行命令hostnamectl。

1、在虚拟机中安装 VMware Tools插件

shell 复制代码
sudo yum install open-vm-tools open-vm-tools-desktop

2、启动服务

shell 复制代码
sudo systemctl enable --now vmtoolsd

3、查看服务状态

shell 复制代码
systemctl status vmtoolsd

4、重启虚拟机,执行date命令验证

SVN 条目不可读

问题:这个问题主要出现在svnserve.conf文件中的anon-access访问权限的设置问题上。

解决:打开svnserve.conf文件后,把read 改成 none,修改完配置文件,别忘了需要重启svn服务才会生效,此时直接显示日志,不会再报错了。

ini 复制代码
#anon-access = read
anon-access = none
相关推荐
花间相见11 分钟前
【计算基础|MySQL18】Buffer Pool 与内存管理
后端·sql·mysql
迪康Defender1 小时前
PHP 高危漏洞应急分析:从风险原理到端点侧纵深防护
运维·开发语言·安全·自动化·php·运维开发·远程工作
躺柒1 小时前
读数据安全架构设计与实践16安全架构案例(上)
安全·php·零信任·安全架构·防火墙·无边界
花间相见1 小时前
【计算基础|Redis01】【上手】安装连接、配置与通用命令
数据库·后端·面试
我命由我123452 小时前
6-3.Python 异常处理 - 异常处理进阶(else 块与 finally 块、异常传递、自定义异常)
开发语言·前端·数据库·后端·python·学习·java-ee
深入云栈2 小时前
Netty 4.2.x 源码深度解析 (二十一):Pipeline 事件传播 —— Inbound 与 Outbound 的双向流转
java·后端·架构
卷无止境2 小时前
长篇写作 Skill 横向盘点:从单文件指令到多智能体流水线
后端·python
斯维赤2 小时前
微信步数的10点定时推送,看似简单,实则暗藏玄机
java·后端
RobinDevNotes2 小时前
crontab 管不住时,该上 Airflow 了
后端
系统集成-鹰翔2 小时前
ERP接口月度统计少了零单月份:SQLite分组与最近三个月均值排查
javascript·数据库·经验分享·后端