三步接入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
相关推荐
ChinaRainbowSea32 分钟前
8. RabbitMQ 消息队列 + 结合配合 Spring Boot 框架实现 “发布确认” 的功能
java·spring boot·分布式·后端·rabbitmq·java-rabbitmq
星星电灯猴1 小时前
flutter: 解析 Bloc 实现原理
后端
bcbnb1 小时前
Flutter_bloc框架使用笔记,后续估计都不太会用了(1)
后端
唐静蕴1 小时前
Kotlin语言的安全开发
开发语言·后端·golang
调试人生的显微镜1 小时前
Flutter开发 -- 使用Bloc管理状态
后端
开心猴爷1 小时前
深入解析 Flutter Bloc:从原理到实战
后端
aiopencode1 小时前
Flutter中的BLoC,你所需要知道的一切
后端
牛马喜喜1 小时前
如何优雅使用node.js操作数据库 助力个人应用开发
后端·orm
uhakadotcom2 小时前
Guava 简介:让 Java 开发更高效
后端·面试·github
雷渊2 小时前
分析@Autowired和@Resource的使用场景
java·后端·面试