PHP 调用 DeepSeek API 完整指南

简介

本文将介绍如何使用 PHP 调用 DeepSeek API,实现流式对话并保存对话记录。PHP 版本使用面向对象的方式实现,代码结构清晰,易于维护。

1. 环境准备

1.1 系统要求

  • PHP 7.0 或更高版本
  • PHP cURL 扩展
  • 文件写入权限

1.2 项目结构

deepseek-project/
├── main.php          # 主程序
└── conversation.txt  # 对话记录文件

2. 完整代码实现

<?php

class DeepSeekChat {
   
    private $url = 'https://api.siliconflow.cn/v1/chat/completions';
    private $apiKey = 'YOUR_API_KEY';  // 替换为你的 API Key
    private $logFile = 'conversation.txt';

    public function __construct() {
   
        // 确保日志文件存在且可写
        if (!file_exists($this->logFile)) {
   
            touch($this->logFile);
        }
    }

    private function saveToFile($content, $isQuestion = false) {
   
        $timestamp = date('Y-m-d H:i:s');
        $text = $isQuestion 
            ? "\n[$timestamp] Question:\n$content\n\n[$timestamp] Answer:\n"
            : $content;
        
        file_put_contents($this->logFile, $text, FILE_APPEND);
    }

    private function processStreamingResponse($handle) {
   
        $buffer = '';
        while (!feof($handle)) {
   
            $chunk = fread($handle, 1024);
            $buffer .= $chunk;

            // 处理缓冲区中的每一行
            while ((
### 将 DeepSeek R1 集成到 PHP 项目 #### 使用腾讯云 TI 平台提供的 API 接口服务 为了将 DeepSeek R1 集成至 PHP 项目中,开发者应当利用腾讯云 TI 平台所提供的开放 API 接口服务[^3]。此接口允许用户轻松地将模型功能嵌入自有平台内。 #### 获取访问凭证并初始化 SDK 或手动请求 首先需注册成为腾讯云用户,并获取相应的 SecretId 和 SecretKey 访问密钥。之后可以选择下载官方提供的 PHP 版本的 SDK 来简化调用逻辑;当然也可以直接发起 HTTP 请求来与 API 进行交互。对于后者而言,则需要按照官方文档中的指导构建合适的 URL、设置必要的头部信息(如签名验证所需参数)以及准备 POST 数据体的内容结构。 #### 构建请求数据包并向指定端点发送请求 当采用直接请求的方式时,在准备好所有必需的信息后就可以构造一个 JSON 格式的字符串作为 payload 发送给目标地址。下面给出了一段简单的代码片段用于展示如何创建这样的请求: ```php <?php // 设置API网关URL, 替换成实际环境下的有效链接 $url = "https://api.ti-platform.com/deepseek-r1"; // 准备POST数据 $data = array( 'prompt' => '你好', ); // 初始化cURL会话句柄资源 $ch = curl_init(); // 设置选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', // 添加其他必要头信息... ]); // 执行会话 $response = curl_exec($ch); if ($response === false) { echo 'Curl error: ' . curl_error($ch); } // 关闭会话 curl_close($ch); // 输出响应结果 echo $response; ?> ``` 这段脚本展示了怎样向 DeepSeek R1 的 API 网关提交一个问题串(`prompt`)并通过 cURL 库接收返回的数据流。请注意这里仅提供了一个非常基础的例子,具体实现细节还需参照最新的 [API 对接文档](#),确保遵循最佳实践指南完成开发工作。 #### 可能遇到的问题及解决办法 - **网络连接失败**:如果应用程序无法成功建立与远程服务器之间的 TCP/IP 连接,则可能是由于防火墙规则阻止了外发流量或是 DNS 解析错误造成的。建议检查本地机器的安全策略配置文件以及确认域名解析无误。 - **认证鉴权异常**:每次发出的有效载荷都应附带有效的身份证明材料以便于云端识别合法客户端的身份。一旦发生权限不足的情况通常是因为时间戳过期或者是 HMAC-SHA256 加密算法计算出来的 Signatures 不匹配所引起。此时应该重新生成新的 Token 或者仔细核对编码过程是否存在笔误之处。 - **超时等待太久**:有时因为网络状况不佳或者其他原因导致长时间得不到回应而触发 timeout 错误提示框弹出。针对这种情况可以在编写程序的时候适当调整 `CURLOPT_TIMEOUT` 参数值给予更多缓冲余量给远端处理任务的时间窗口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老大白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值