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 (
<think>好的,我现在需要帮助用户了解如何通过公司网站调用DeepSeek API。首先,用户的问题集中在集成和调用示例教程上,所以我得先回顾已有的引用内容,看看有哪些相关信息可以利用。 根据用户提供的引用,特别是引用[1]到[4],这些文档提到了API密钥的获取、不同编程语言(如Asp.Net和Spring Boot)的调用示例,以及使用POST或GET方法的需求。用户可能希望得到一个通用的步骤指南,适用于公司网站,无论使用哪种后端技术。 首先,我需要整理出调用API的一般步骤:获取API密钥、选择开发语言、构建HTTP请求、处理响应。然后,每个步骤需要结合引用中的具体信息。例如,引用[2]和[4]提到API密钥的注册地址,需要确保用户知道如何获取密钥。引用[3]和[4]分别给出了Asp.Net和Spring Boot的示例,可能需要提供不同语言的代码片段,但用户的问题是关于公司网站集成,可能需要更通用的示例,比如JavaScript的AJAX调用,或者使用后端服务如Node.js、Python等。 不过,用户提到的“公司网站”可能使用不同的技术栈,比如PHP、Java、Python等。因此,可能需要给出几个常见语言的示例,或者指导用户参考官方文档。引用[1]的API文档是重要的资源,应该强调让用户查阅官方文档以获取最新信息。 另外,要注意用户可能对API请求的具体参数和认证方式不太清楚。引用[3]提到可能需要使用POST方法,而示例中使用的是GET,所以需要提醒用户根据API要求调整HTTP方法。认证方面,通常API密钥放在请求头中,比如Authorization头,或者作为参数传递,这需要根据DeepSeek API的具体要求来定。引用[4]中的Spring Boot示例可能使用了某种方式,但具体细节可能需要查看官方文档。 安全性也是一个重点,需要提醒用户不要将API密钥暴露在客户端代码中,应该通过后端服务来调用API,避免密钥泄露。引用[4]中的Spring Boot项目创建步骤可能涉及后端处理,这一点需要强调。 最后,生成相关问题时要考虑用户可能遇到的后续问题,比如错误处理、性能优化、参数配置等,这些都可以作为相关问题提出。 现在,我需要将这些思考整理成一个结构清晰的回答,涵盖基本步骤、示例代码(可能包括JavaScript、Python等)、注意事项,并引用提供的参考文献。同时,确保遵循用户提供的格式要求,如行内公式使用$...$,独立公式用$$...$$,但在这个问题中可能不太涉及数学公式,所以可能不需要使用。然后生成相关问题,帮助用户进一步探索。</think>### 如何通过公司网站调用 DeepSeek API #### 1. 基本集成步骤 - **获取API密钥** 注册并登录DeepSeek平台,生成API密钥(注册地址见引用[^2])。 - **选择开发语言** 根据公司网站后端技术(如Java、Python、.NET),选择对应的调用方式。例如: - **Spring Boot**:通过`RestTemplate`或`WebClient`发送HTTP请求[^4]。 - **Asp.Net**:使用`HttpClient`类构建请求[^3]。 - **构建HTTP请求** 需包含以下要素: - **请求头**:添加认证信息(如`Authorization: Bearer <API_KEY>`)。 - **请求体**:根据API文档定义参数(如输入文本、模型类型)。 - **处理响应** 解析返回的JSON数据,提取所需结果(如生成的文本、错误码)。 #### 2. 示例代码(以JavaScript前端 + Node.js后端为例) ```javascript // 前端调用(需通过后端代理避免暴露API密钥) fetch('/api/deepseek', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ prompt: "你好,DeepSeek" }) }) .then(response => response.json()) .then(data => console.log(data)); ``` ```javascript // Node.js后端(使用Express框架) const express = require('express'); const axios = require('axios'); const app = express(); app.use(express.json()); app.post('/api/deepseek', async (req, res) => { try { const response = await axios.post('https://api.deepseek.com/v1/chat', { messages: [{ role: 'user', content: req.body.prompt }] }, { headers: { 'Authorization': `Bearer YOUR_API_KEY` } }); res.json(response.data); } catch (error) { res.status(500).json({ error: 'API调用失败' }); } }); ``` #### 3. 注意事项 - **密钥安全**:API密钥需存储在后端环境变量或密钥管理服务中,禁止明文暴露在前端。 - **请求方法**:根据API要求选择GET/POST(如对话类接口通常用POST)。 - **速率限制**:需遵守API调用频率限制,必要时实现重试机制[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老大白菜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值