一文让你轻松上手,在你的项目中增加ai功能

143 阅读3分钟

🌐 调用大语言模型(LLM)API 指南

本文档介绍如何使用 OpenAI 及其兼容接口调用大语言模型(LLM),涵盖核心概念、常用接口、SDK 使用方式以及最佳实践。适合初学者快速上手,也便于开发者构建对话系统、智能助手等应用。


1. 核心接口类型对比

✅ 文本补全接口(Completion)

适用于简单的“输入提示 → 生成文本”任务,即通过一个 prompt 直接生成后续内容。

请求示例:
{
  "model": "text-davinci-003",
  "prompt": "写一首春天的诗",
  "max_tokens": 100
}
返回结果示例:
{
  "text": "春风拂面花自开,柳绿桃红映山川。\n溪水潺潺鸟欢唱,人间处处是芳年。"
}

⚠️ 注意:该接口属于早期设计,不支持多轮对话角色管理,且已被 OpenAI 官方逐步弃用。新项目推荐使用更灵活的 Chat Completion 接口


✅ 聊天接口(Chat Completion)

现代主流接口,基于“对话历史”的交互模式,支持多角色参与(systemuserassistant),非常适合构建聊天机器人、智能客服、多轮问答等场景。

请求示例:
{
  "model": "gpt-3.5-turbo",
  "messages": [
    {
      "role": "system",
      "content": "你是一个诗人,擅长用中文写诗。"
    },
    {
      "role": "user",
      "content": "写一首春天的诗"
    }
  ]
}
返回结果示例:
{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "春风拂面花自开,\n柳绿桃红映山川。\n溪水潺潺鸟欢唱,\n人间处处是芳年。"
      }
    }
  ]
}

优势:结构清晰、支持上下文记忆、易于实现复杂对话逻辑。


2. 对话中的三大核心角色

chat/completions 接口中,messages 数组中的每一条消息都包含一个 role 字段,用于定义说话者的身份。以下是三个关键角色的含义:

角色(role)含义作用
system系统指令设定模型的行为风格、语气、能力范围等“人格”特征。通常只在对话开始时设置一次。
user用户输入表示用户提出的问题或指令,是模型响应的直接触发点。
assistant助手回复表示模型之前的回答,用于维持多轮对话的连贯性。

📌 示例说明

[  { "role": "system",   "content": "你是一个幽默风趣的科普博主" },  { "role": "user",     "content": "请解释什么是黑洞?" },  { "role": "assistant","content": "想象一下宇宙有个超级贪吃的胃……" },  { "role": "user",     "content": "那它会把地球吸进去吗?" }]
  • system 告诉模型:“你要用轻松有趣的方式讲解科学。”
  • 第一个 user 提问,引发回答;
  • assistant 回答后被记录;
  • 第二个 user 继续追问,模型能基于前面的回答继续对话。

💡 提示:省略 system 角色也可以工作,但加入它可以显著提升回答质量和一致性。


3. 使用 SDK 调用 API(JavaScript/Node.js)

推荐使用官方 openai SDK 简化开发流程。

初始化客户端

import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'your-api-key',           // 必填:你的 API 密钥
  baseURL: 'https://api.302.ai/v1'  // 可选:使用第三方兼容 OpenAI 的服务地址
});

🔐 安全提示

  • apiKey 是敏感信息,切勿暴露在前端代码或版本控制中(如 GitHub)。
  • 建议将 API 调用封装在后端服务中,前端通过自己的服务器中转请求。

发起聊天请求(异步)

const response = await client.chat.completions.create({
  model: 'gpt-3.5-turbo',
  messages: [
    { role: 'system',   content: '你是一个诗人,擅长用中文写诗。' },
    { role: 'user',     content: '写一首春天的诗' }
  ]
});

// 输出模型回复
console.log(response.choices[0].message.content);

choices[0] 表示首选生成结果;delta.content 用于流式输出。


4. 手动发送 HTTP 请求(Fetch 示例)

如果不使用 SDK,也可以直接调用 REST API。

fetch('https://api.302.ai/v1/chat/completions', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer your-api-key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'gpt-3.5-turbo',
    messages: [
      { role: 'user', content: '写一首春天的诗' }
    ]
  })
})
.then(res => res.json())
.then(data => console.log(data.choices[0].message.content));

✅ 适用于浏览器环境或轻量级脚本。


5. 常见错误排查

错误信息原因解决方案
Missing 302 Apikey缺少 API 密钥检查 apiKey 是否正确填写
Invalid authorization密钥无效或格式错误确保以 Bearer xxx 形式传递
Model not found模型名称拼写错误查阅平台支持的模型列表
Request timed out网络延迟或服务器问题检查网络连接或更换 endpoint