最近在AI圈子里,DeepSeek这个名字的热度持续攀升,从技术社区到投资领域,讨论声不绝于耳。无论是开发者热议的“codex接入deepseek”、“deepseek本地部署”,还是行业观察者关注的“openai等巨头大幅降价对标deepseek”,都指向一个核心事实:DeepSeek正在成为全球AI竞赛中一股不可忽视的力量。而近期关于其“重启第二轮融资,拟募资500亿元”的消息,更是将这家公司推向了风口浪尖。

对于开发者而言,这不仅仅是一条财经新闻。融资背后,是DeepSeek在模型能力、基础设施、生态建设上的持续投入,最终会直接影响到我们手中的工具、可用的API、以及未来的技术选择。本文将从开发者的视角出发,深入探讨DeepSeek的技术生态、实战接入方案,并分析其最新动态对技术社区意味着什么。无论你是想将DeepSeek集成到自己的应用中,还是单纯好奇其技术实力,这篇文章都将为你提供一个清晰的路线图。

1. DeepSeek技术全景与核心价值

在讨论具体的代码和配置之前,我们有必要先厘清DeepSeek究竟是什么,以及它为何能吸引如此多的关注。

1.1 DeepSeek是什么?不仅仅是另一个大模型

DeepSeek是由深度求索公司开发的一系列大型语言模型。与许多同类产品不同,它从一开始就强调“深度”与“探索”并重,不仅在通用对话能力上表现出色,更在代码生成、数学推理、逻辑分析等需要深度思考的领域建立了显著优势。网络上流传的“deepseek斩杀线”说法,形象地比喻了其在解决复杂问题时那种精准、高效的能力阈值。

从技术架构上看,DeepSeek模型家族(如DeepSeek-V2, DeepSeek-Coder)通常采用混合专家(MoE)等先进架构,在控制参数总量的同时,激活其中的一部分进行推理,从而实现了更优的性能与成本平衡。这也是其能够承诺“低价”并引发行业价格战(“deepseek低价风暴打服硅谷”)的技术底气。

1.2 对开发者而言的核心价值

为什么开发者应该关注DeepSeek?其价值主要体现在以下几个方面:

  1. 卓越的代码能力 DeepSeek-Coder 系列模型在多项代码基准测试中名列前茅。无论是代码补全、生成、解释还是调试,它都能提供高度可用的建议,成为编程的“副驾驶”。
  2. 极具竞争力的成本 :DeepSeek API的定价策略极具侵略性,相同token量的费用远低于许多国际主流厂商,这使得个人开发者和小型团队也能负担得起高质量的AI能力。
  3. 灵活的部署方式 :除了云端API,DeepSeek还提供了模型权重,支持本地部署( deepseek本地部署 )。这对于数据敏感、要求低延迟或需要离线运行的应用场景至关重要。
  4. 活跃的生态集成 :正如网络热词所示,DeepSeek正在快速融入开发生态。主流IDE插件(如 codex接入deepseek cursor配置deepseek vscode接入deepseek )和工具链(如 claude code接入deepseek )的支持,让开发者能够无缝地在熟悉的环境中调用其能力。
  5. 持续快速的技术迭代 :从“deepseek v4 flash”到“deepseek v4 pro”,其模型更新迅速,不断带来更强的性能和更优的体验。

理解这些价值点,有助于我们在后续的实战中做出更合适的技术选型和架构设计。

2. 环境准备与接入方式概览

在动手编码之前,我们需要根据应用场景选择最合适的接入方式。主要分为两大类: 云端API调用 本地模型部署

2.1 云端API调用:快速入门与集成

这是最简单、最快速的开始方式,适合大多数Web应用、移动应用或需要快速验证想法的场景。你无需关心硬件、模型加载和优化,只需一个API Key即可。

核心准备步骤:

  1. 获取API Key :访问DeepSeek官网,注册账号并创建API Key。妥善保管此Key,它相当于访问服务的密码。
  2. 确认API端点与版本 :查阅最新官方文档,获取正确的API基础URL(例如 https://api.deepseek.com/v1 )和当前推荐的模型名称(如 deepseek-chat , deepseek-coder )。
  3. 准备开发环境 :确保你的开发环境中安装了能够发送HTTP请求的库。对于Python, requests 库是标准选择;对于Node.js,可以使用 axios fetch API。

2.2 本地模型部署:追求控制与隐私

如果你的项目对数据隐私、网络延迟有极高要求,或者希望完全掌控推理过程,本地部署是更佳选择。这需要更强的硬件(GPU)和技术栈知识。

核心准备步骤:

  1. 硬件评估 :本地部署的性能直接取决于GPU。至少需要一张显存充足的显卡(例如NVIDIA RTX 3090/4090或更高规格的A100/H100)。显存大小决定了你能加载的模型规模(7B、67B等)。
  2. 软件环境
    • Python : 推荐使用3.8以上版本。
    • 深度学习框架 : 准备PyTorch或TensorFlow环境。
    • 模型推理框架 : 这是关键。你可以选择:
      • Transformers (by Hugging Face) :最通用、生态最丰富的库,适合研究和定制化开发。
      • vLLM :专为高吞吐量、低延迟的LLM推理设计,生产环境首选。
      • llama.cpp :使用C++编写,量化模型后可以在CPU或低配GPU上运行,对硬件要求更友好。
  3. 获取模型权重 :从DeepSeek官方渠道(如Hugging Face Model Hub)下载对应的模型文件( .bin .safetensors 文件及配置文件)。

选择哪种方式,取决于你的具体需求。对于教程和大多数集成场景,我们从云端API开始。

3. 实战:通过API将DeepSeek集成到Python应用中

让我们通过一个完整的Python项目示例,演示如何调用DeepSeek的聊天补全API,构建一个简单的命令行问答工具。

3.1 项目初始化与依赖安装

首先,创建一个新的项目目录并初始化虚拟环境,这是一个好的实践,可以隔离项目依赖。

# 创建项目目录并进入
mkdir deepseek-api-demo && cd deepseek-api-demo

# 创建虚拟环境 (Python 3.8+)
python -m venv venv

# 激活虚拟环境
# 在 Windows 上:
venv\Scripts\activate
# 在 macOS/Linux 上:
source venv/bin/activate

# 安装必要的库
pip install requests python-dotenv

我们使用 python-dotenv 来管理敏感的API Key,避免将其硬编码在代码中。

3.2 管理敏感配置

在项目根目录下创建一个名为 .env 的文件,用于存储你的API Key。 切记要将 .env 添加到 .gitignore 文件中,切勿提交到版本控制系统!

# .env 文件内容
DEEPSEEK_API_KEY=你的实际API密钥
DEEPSEEK_API_BASE=https://api.deepseek.com/v1
DEEPSEEK_MODEL=deepseek-chat

接下来,创建 .gitignore 文件:

# .gitignore
venv/
__pycache__/
*.pyc
.env

3.3 编写核心API调用模块

创建一个名为 deepseek_client.py 的文件,这是与DeepSeek API交互的核心模块。

# deepseek_client.py
import os
import requests
from dotenv import load_dotenv

# 加载 .env 文件中的环境变量
load_dotenv()

class DeepSeekClient:
    def __init__(self):
        self.api_key = os.getenv("DEEPSEEK_API_KEY")
        self.api_base = os.getenv("DEEPSEEK_API_BASE", "https://api.deepseek.com/v1")
        self.model = os.getenv("DEEPSEEK_MODEL", "deepseek-chat")
        
        if not self.api_key:
            raise ValueError("DEEPSEEK_API_KEY 未在环境变量或 .env 文件中设置。")
        
        self.headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }
    
    def chat_completion(self, messages, temperature=0.7, max_tokens=2048, stream=False):
        """
        调用DeepSeek聊天补全API。
        
        参数:
            messages (list): 消息列表,格式为 [{"role": "user", "content": "你好"}]
            temperature (float): 采样温度,控制随机性 (0.0 ~ 1.0)。
            max_tokens (int): 生成的最大token数。
            stream (bool): 是否使用流式输出。
        
        返回:
            dict: API的完整响应,或流式响应对象。
        """
        url = f"{self.api_base}/chat/completions"
        payload = {
            "model": self.model,
            "messages": messages,
            "temperature": temperature,
            "max_tokens": max_tokens,
            "stream": stream
        }
        
        try:
            response = requests.post(url, json=payload, headers=self.headers, stream=stream)
            response.raise_for_status()  # 如果状态码不是200,抛出HTTPError
            
            if stream:
                # 返回一个生成器,用于处理流式数据
                return self._handle_stream_response(response)
            else:
                return response.json()
                
        except requests.exceptions.RequestException as e:
            print(f"API请求失败: {e}")
            if hasattr(e, 'response') and e.response is not None:
                print(f"状态码: {e.response.status_code}")
                print(f"响应体: {e.response.text}")
            return None
    
    def _handle_stream_response(self, response):
        """处理流式响应,逐行打印或yield数据块。"""
        for line in response.iter_lines():
            if line:
                decoded_line = line.decode('utf-8')
                if decoded_line.startswith('data: '):
                    data = decoded_line[6:]  # 去掉 'data: ' 前缀
                    if data == '[DONE]':
                        break
                    try:
                        import json
                        chunk = json.loads(data)
                        yield chunk
                    except json.JSONDecodeError:
                        continue

# 提供一个简单的单次调用函数
def ask_deepseek(question, client=None):
    """快速提问的便捷函数。"""
    if client is None:
        client = DeepSeekClient()
    
    messages = [{"role": "user", "content": question}]
    response = client.chat_completion(messages)
    
    if response and 'choices' in response and len(response['choices']) > 0:
        answer = response['choices'][0]['message']['content']
        return answer
    else:
        return "抱歉,未能获取到有效回答。"

3.4 创建主程序与交互界面

现在,创建一个 main.py 文件,作为我们应用的入口点,实现一个简单的交互式命令行循环。

# main.py
from deepseek_client import DeepSeekClient, ask_deepseek
import sys

def main():
    print("=" * 50)
    print("DeepSeek 命令行交互客户端")
    print("输入 'quit' 或 'exit' 退出程序")
    print("输入 'stream on' 开启流式输出,'stream off' 关闭")
    print("=" * 50)
    
    client = DeepSeekClient()
    stream_mode = False
    
    while True:
        try:
            user_input = input("\n[你] > ").strip()
            
            if user_input.lower() in ['quit', 'exit', 'q']:
                print("再见!")
                break
            elif user_input.lower() == 'stream on':
                stream_mode = True
                print("[系统] 流式输出模式已开启。")
                continue
            elif user_input.lower() == 'stream off':
                stream_mode = False
                print("[系统] 流式输出模式已关闭。")
                continue
            elif not user_input:
                continue
            
            print("\n[DeepSeek] > ", end='', flush=True)
            
            if stream_mode:
                # 流式输出处理
                messages = [{"role": "user", "content": user_input}]
                full_response = ""
                for chunk in client.chat_completion(messages, stream=True):
                    if chunk and 'choices' in chunk:
                        delta = chunk['choices'][0].get('delta', {})
                        content = delta.get('content', '')
                        if content:
                            print(content, end='', flush=True)
                            full_response += content
                print()  # 换行
            else:
                # 非流式输出
                answer = ask_deepseek(user_input, client)
                print(answer)
                
        except KeyboardInterrupt:
            print("\n\n程序被中断。")
            break
        except Exception as e:
            print(f"\n[错误] 发生未知错误: {e}")

if __name__ == "__main__":
    main()

3.5 运行与验证

确保你的 .env 文件已正确配置API Key,然后在激活的虚拟环境中运行程序:

python main.py

如果一切正常,你将看到欢迎信息,并可以开始与DeepSeek对话。尝试问一些技术问题,比如“用Python写一个快速排序函数”或“解释一下RESTful API的设计原则”,观察模型的回答质量和速度。

预期输出示例:

==================================================
DeepSeek 命令行交互客户端
输入 'quit' 或 'exit' 退出程序
输入 'stream on' 开启流式输出,'stream off' 关闭
==================================================

[你] > 用Python写一个快速排序函数

[DeepSeek] >
def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)

# 示例
my_list = [3, 6, 8, 10, 1, 2, 1]
sorted_list = quick_sort(my_list)
print(sorted_list)  # 输出: [1, 1, 2, 3, 6, 8, 10]

通过这个实战项目,你已经成功搭建了一个与DeepSeek API交互的基础框架。这个框架可以轻松扩展,集成到Web后端(如Flask/Django)、桌面应用或自动化脚本中。

4. 进阶:在开发工具中集成DeepSeek(以VSCode为例)

对于开发者来说,在IDE中直接获得AI辅助能极大提升效率。网络热词中频繁出现的 vscode接入deepseek codex配置deepseek 正是这种需求的体现。下面我们以VSCode为例,介绍两种主流集成方式。

4.1 方式一:使用官方或社区插件(最便捷)

许多AI助手插件已经支持将后端模型切换为DeepSeek。

  1. 安装插件 :在VSCode扩展商店中搜索 CodeGeeX Tongyi Lingma Continue 等插件。部分插件的设置中允许自定义API端点。
  2. 配置API :在插件的设置页面,找到“API Provider”或“自定义模型”选项。
    • API URL :填写 https://api.deepseek.com/v1/chat/completions
    • API Key :填入你的DeepSeek API Key。
    • Model Name :填写 deepseek-chat deepseek-coder
  3. 验证 :重启VSCode,在代码编辑器中选中一段代码或输入注释,尝试使用插件的代码解释、生成或补全功能,查看是否由DeepSeek驱动。

4.2 方式二:通过Cursor或Claude Code等“AI原生”IDE

Cursor Claude Code 这类新一代编辑器内置了强大的AI能力,并且通常支持配置自定义的AI提供商。

以Cursor为例的配置思路:

  1. 打开Cursor编辑器。
  2. 进入设置(Settings),寻找 AI Provider Advanced 相关选项。
  3. 将AI后端切换为 Custom OpenAI-Compatible
  4. 在配置项中填入:
    • Base URL : https://api.deepseek.com/v1
    • API Key : 你的DeepSeek API Key。
    • Model : deepseek-chat (用于对话) 或 deepseek-coder (用于代码)。
  5. 保存配置后,Cursor的聊天、代码补全( Cmd/Ctrl + K )等功能就会调用你配置的DeepSeek API。

这种方式让你能在拥有优秀编辑器体验的同时,享受到DeepSeek强大的模型能力,且数据通过你自己的API Key传输,可控性更高。

5. 本地部署DeepSeek模型实战指南

当云端API无法满足需求时,本地部署是终极解决方案。这里我们使用 transformers 库和 vLLM 两种最主流的方式,演示如何本地运行一个较小的DeepSeek模型(例如DeepSeek-Coder-1.3B)。

5.1 环境准备(GPU版本)

确保你的环境已安装CUDA和PyTorch。

# 安装PyTorch (请根据你的CUDA版本访问官网选择命令)
# 例如,对于CUDA 11.8
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# 安装 transformers 和 accelerate
pip install transformers accelerate

5.2 使用Transformers库进行推理

这是一个基础且灵活的方法,适合研究和快速测试。

# local_inference_transformers.py
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

# 指定模型名称,这里以一个小模型为例
model_name = "deepseek-ai/deepseek-coder-1.3b-instruct"

print(f"正在加载模型: {model_name}...")
# 加载分词器
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
# 加载模型到GPU,如果显存不够可以去掉 .to("cuda")
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True).to("cuda")

# 准备输入
prompt = "写一个Python函数,计算斐波那契数列的第n项。"
messages = [
    {"role": "user", "content": prompt}
]
# 将消息格式化为模型所需的输入文本
input_text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)

# 编码输入
inputs = tokenizer(input_text, return_tensors="pt").to("cuda")

# 生成输出
print("正在生成回答...")
with torch.no_grad():
    outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.7, do_sample=True)
    
# 解码输出
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print("="*50)
print("生成的回答:")
print("="*50)
# 只打印模型新生成的部分,去掉输入提示
answer_start = generated_text.find(prompt) + len(prompt)
print(generated_text[answer_start:].strip())

运行说明 :首次运行会从Hugging Face下载模型权重,耗时较长。请确保有足够的磁盘空间和GPU显存。对于更大的模型(如6.7B、33B),需要相应更大的显存。

5.3 使用vLLM进行高性能推理(生产推荐)

vLLM 以其极高的吞吐量和高效的PagedAttention内存管理而闻名,是生产环境部署的首选。

# 安装 vLLM
pip install vllm

创建一个使用vLLM的推理脚本:

# local_inference_vllm.py
from vllm import LLM, SamplingParams

# 定义模型和采样参数
model_name = "deepseek-ai/deepseek-coder-6.7b-instruct"  # 根据显存选择模型
llm = LLM(model=model_name, trust_remote_code=True, max_model_len=4096)  # 初始化模型

sampling_params = SamplingParams(temperature=0.7, top_p=0.95, max_tokens=512)

# 准备提示词
prompts = [
    "用Python实现一个简单的HTTP服务器,监听8080端口,返回'Hello World'。",
]

print("正在生成...")
outputs = llm.generate(prompts, sampling_params)

# 打印结果
for output in outputs:
    generated_text = output.outputs[0].text
    print("="*50)
    print("问题:", output.prompt)
    print("-"*20)
    print("回答:", generated_text)
    print("="*50)

vLLm会自动处理批处理和流式输出,其性能远超原生Transformers推理,特别适合需要同时处理多个请求的API服务。

6. 常见问题与排查思路(FAQ)

在实际集成和部署过程中,你可能会遇到以下问题。这里提供一个排查清单。

问题现象 可能原因 排查步骤与解决方案
API调用返回401/403错误 1. API Key无效或过期。
2. API Key未正确设置到请求头。
3. 账户欠费或权限不足。
1. 检查 .env 文件中的 DEEPSEEK_API_KEY 是否正确,或环境变量是否生效。
2. 在代码中打印 self.headers 确认 Authorization 字段格式正确( Bearer <your_key> )。
3. 登录DeepSeek控制台,检查账户状态和余额。
API响应慢或超时 1. 网络连接问题。
2. 服务器端负载高。
3. 请求的 max_tokens 设置过大。
1. 使用 ping curl 测试到API端点的网络延迟。
2. 重试请求,或查看官方状态页。
3. 适当减少 max_tokens ,或使用流式输出 ( stream=True ) 以获得更快的首字响应。
本地部署时GPU内存不足(OOM) 1. 模型过大,超出GPU显存。
2. 未使用量化技术。
3. 推理批次大小 ( batch_size ) 过大。
1. 换用更小的模型(如从33B换到6.7B)。
2. 使用 bitsandbytes 库进行4-bit或8-bit量化加载模型。
3. 在 LLM (vLLM) 或 from_pretrained (Transformers) 中减小 batch_size max_batch_size
模型生成无关或胡言乱语的内容 1. temperature 参数设置过高。
2. 提示词 ( prompt ) 编写不清晰。
3. 模型本身在特定任务上能力有限。
1. 降低 temperature (如从0.9调到0.3) 以减少随机性。
2. 优化提示词工程,明确指令、上下文和输出格式。
3. 尝试换用更擅长该任务的专用模型(如代码任务用 deepseek-coder )。
在VSCode等插件中配置后无响应 1. 插件配置的API URL或模型名称错误。
2. 插件版本过旧,不兼容DeepSeek API格式。
3. 网络代理导致插件无法连接。
1. 仔细核对插件设置中的每一个字段,确保与官方文档一致。
2. 更新插件到最新版本。
3. 检查VSCode的代理设置,或尝试在无代理环境下配置。
流式输出 ( stream=True ) 不工作或格式错误 1. 代码中处理流式响应的逻辑有误。
2. API端点在流式模式下返回的数据格式非标准。
1. 参考本文 _handle_stream_response 方法,确保正确处理 data: 前缀和 [DONE] 标记。
2. 打印原始响应行进行调试,或查阅DeepSeek API文档关于流式响应的具体说明。

7. 最佳实践与工程化建议

将DeepSeek集成到生产级项目中,需要考虑更多工程化因素。

7.1 API调用最佳实践

  1. 设置合理的超时与重试 :网络并不稳定,必须为HTTP请求设置连接超时和读取超时,并实现带有退避策略的重试机制(如指数退避)。
    import requests
    from requests.adapters import HTTPAdapter
    from urllib3.util.retry import Retry
    
    session = requests.Session()
    retries = Retry(total=3, backoff_factor=1, status_forcelist=[502, 503, 504])
    session.mount('https://', HTTPAdapter(max_retries=retries))
    
    # 然后在client中使用这个session
    response = session.post(url, ..., timeout=(3.05, 60))  # (连接超时,读取超时)
    
  2. 实施速率限制 :避免滥用API导致被限流。根据官方文档的速率限制,在客户端实现请求队列或限流逻辑。
  3. 异步调用提升性能 :对于高并发应用,使用 aiohttp httpx 进行异步调用,可以极大提升吞吐量。
  4. 结构化日志与监控 :记录每一次API调用的耗时、token使用量、状态码和关键错误。这有助于成本分析和故障排查。

7.2 提示词工程优化

模型的输出质量极大程度上取决于输入提示词。

  1. 角色设定 :明确告诉模型它应该扮演的角色。
    • :“写一个排序函数。”
    • :“你是一位资深的Python工程师,请为初学者编写一个注释详尽的快速排序函数,并附上一个使用示例。”
  2. 提供上下文与示例 :对于复杂任务,提供少量示例(Few-Shot Learning)能显著提升效果。
    messages = [
        {"role": "system", "content": "你是一个将自然语言转换为SQL查询的助手。"},
        {"role": "user", "content": "查询所有在2023年注册的用户。"},
        {"role": "assistant", "content": "SELECT * FROM users WHERE YEAR(registration_date) = 2023;"},
        {"role": "user", "content": "找到销售额最高的前5个产品。"}  # 模型会参考上面的示例
    ]
    
  3. 指定输出格式 :如果需要JSON、XML或特定结构的文本,在提示词中明确说明。 “请以JSON格式返回,包含 ‘name‘, ‘age‘, ‘city‘ 三个字段。”

7.3 本地部署的生产考量

  1. 硬件选型与成本 :精确计算模型加载所需显存(可通过 model.get_memory_footprint() 估算),权衡GPU租赁(云服务器)与购买的成本。
  2. 服务化与API封装 :不要直接运行Python脚本。使用 FastAPI Flask 将模型封装成HTTP服务,并配备健康检查、性能监控和负载均衡。
  3. 模型版本管理 :像管理代码一样管理模型权重文件。当需要升级模型时,应有清晰的回滚方案和A/B测试流程。
  4. 安全与权限 :为本地模型服务设置API网关,实施认证(如API Key、JWT)和访问控制,防止未授权访问。

7.4 关于“融资新闻”的技术视角思考

回到开头的新闻,“拟募资500亿元”对于开发者社区意味着什么?从技术角度看,大规模融资通常预示着:

  • 更强大的基础设施 :可能用于建设更庞大的算力集群,训练更强大的下一代模型(如传闻中的“DeepSeek-V3”)。
  • 更低的API价格 :规模效应可能进一步拉低推理成本,使开发者能以更低廉的价格获得AI能力。
  • 更丰富的工具链 :公司可能会投入更多资源开发和完善SDK、调试工具、可视化平台等,改善开发者体验。
  • 更开放的生态策略 :为了构建护城河,可能会推出更友好的开源政策、模型许可证或社区支持计划。

因此,关注此类动态,有助于我们判断技术趋势,提前规划技术栈,抓住可能出现的红利期。

从在命令行中调用一个简单的API,到在IDE中无缝获得编码辅助,再到将大模型部署在自有服务器上构建专属AI应用,DeepSeek为开发者提供了一条清晰且灵活的能力接入路径。其背后反映的是AI技术民主化和工具化的必然趋势。作为开发者,我们的任务不仅是学会调用一个API,更是要理解其背后的原理,掌握工程化集成的技巧,并能够根据项目需求在“便捷的云服务”与“可控的本地部署”之间做出明智的权衡。本文提供的从入门到进阶的实战指南,希望能成为你探索DeepSeek世界的一块坚实跳板。接下来,不妨就从创建一个 .env 文件,运行第一个 chat_completion 调用开始吧。

更多推荐