补一些LLM的基础知识

13 阅读6分钟

在使用 Claude Code 过程中,发现了很多之前听说过但又不是特别了解的名字,比如LiteLLM,OpenRouter,CloseAI,CC-Switch等等,这篇文章将对相关技术进行系统整理。

LLM 协议选择

每家公司定义的 API 格式接口规范

OpenAI

OpenAI 协议本质就是一套调用大模型的标准 HTTP API 规范,现在已经成为整个 LLM 生态的事实标准

/v1/chat/completions用聊天格式,让模型生成一个回复
/v1/embeddings生成向量
/v1/completions老文本补全
/v1/responses新一代统一接口,试图统一 chat,tools,multimodal

OpenAI 协议长这样:

POST /v1/chat/completions

{
  "model": "gpt-4",
  "messages": [
    {"role": "system", "content": "你是一个助手"},
    {"role": "user", "content": "你好"}
  ],
  "temperature": 0.7,
  "max_tokens": 100
}
# message结构,这套结构后来几乎成了行业标准
[
  {"role": "system", "content": "..."},
  {"role": "user", "content": "..."},
  {"role": "assistant", "content": "..."}
]

Anthropic API - Claude

Anthropic API 是 Claude 的官方标准接口,专门为 Claude 定制,但由于有大量工具只支持 OpenAI API,所以也有 OpenAI API 的兼容协议。推荐无特殊需求优先使用原生协议,更加稳定,功能更加丰富,支持思维链、原生插件等高级功能,OpenAI兼容格式兼容有限,仅建议使用在比如Cursor等只支持自定义OpenAI接口时使用。

POST /v1/messages

{
  "model": "claude-3-opus-20240229",
  "max_tokens": 100,
  "messages": [
    {
      "role": "user",
      "content": "你好"
    }
  ]
}
# message结构,没有 system role,而是单独字段
[
  {"role": "user", "content": "你好"},
  {"role": "assistant", "content": "你好!"}
]

LLM 网关

LiteLLM

使用 OpenAI 格式调用所有 LLM API ,将不同模型统一成 completion() 风格与一致的输出。

没有 LiteLLM 之前,不同LLM调用方法名不一样,参数不一样,数据结构也不同。

from openai import OpenAI
client = OpenAI()

resp = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "你好"}]
)

import anthropic

client = anthropic.Anthropic()

resp = client.messages.create(
    model="claude-3-sonnet-20240229",
    messages=[{"role": "user", "content": "你好"}],
    max_tokens=1000
)
# vLLM
import requests

resp = requests.post(
    "http://localhost:8000/v1/chat/completions",
    json={
        "model": "llama3",
        "messages": [{"role": "user", "content": "你好"}]
    }
)
if provider == "openai":
    ...
elif provider == "anthropic":
    ...
elif provider == "vllm":
    ...

有了 LiteLLM 之后

from litellm import completion

# OpenAI
completion(model="gpt-4", messages=[{"role": "user", "content": "你好"}])

# Anthropic
completion(model="claude-3", messages=[{"role": "user", "content": "你好"}])

# vLLM
completion(model="vllm/llama3", messages=[{"role": "user", "content": "你好"}])

LLM 部署

在本地部署一个大模型然后集成到 AI 应用中,vLLM 更适用于企业级高性能生产环境,更适合在企业服务器上搭一个提供API的接口,而 Ollama 则更适合小规模本地开发场景。

Ollama

Ollama 平台有很多模型,可以很方便的在本地运行,LiteLLM 支持 Ollama 的所有模型。开启ollama服务之后,模型的部署使用非常方便,比如:

# 模型拉取
ollama pull codellama:7b

# 运行示例1
ollama run codellama:7b
# 运行示例2
curl http://127.0.0.1:11434/api/generate -d '{
  "model": "codellama:7b",
  "prompt": "Write a Python function to reverse a linked list."
}'

中转平台

OpenRouter

A unified interface for LLMs. Better prices, better uptime, no subscription.

OpenRouter 提供了一个统一的 API 接口,让开发者可以同时调用多个大模型供应商的 API,如 OpenAI、Anthropic、Mistral、Google Gemini,甚至包括一些国内的如 Kimi、Qwen 等。它就像是一个大模型中转站,统一了 API 接入方式,让你不用再为每个模型单独注册账号、配置 API Key,也就是说可以用一套 API 快速体验市面上几乎所有主流大模型以及最新的大模型。

OpenRouter 的收费机制是模型调用本身不加价。比如你调用 GPT-4、Claude 或者 DeepSeek,花的钱和你直接去官方 API 是一模一样的。在充值的时候会有一定的手续费,就是买积分的时候,平台会多收取 5.5%(最低 0.8 美元)。OpenRouter 对免费模型(那些带 :free 的模型)设置了每日调用次数上限。如果你还没购买至少 10 美元的积分,每天只能调用免费模型 50 次;一旦你购买了至少 10 美元积分,就可以把这个上限提升到 1000 次/天。这个限制是专门针对免费模型的,不是所有模型调用次数的通用额度。在充值的过程中,在最下面一行选择 “Use one-time payment methods”,甚至可以使用支付宝支付。

它的特点是:

  • 提供统一格式的 /v1/chat/completions 接口,兼容 OpenAI API
  • 支持模型路由**、流量限额控制、**fallback 策略
  • 可以用自己的 API Key,也可以充值使用平台提供的 Key
  • 开源了部分 SDK,并搭建了活跃的 Discord 社区

问题:

  • 多一层中转,多一层费用。
  • 延迟增加,稳定性受影响,存在隐私安全问题
  • 功能可能不完整,比如:Claude 原生 tool use,GPT 最新特性,有时会被“抹平”

国内也有一些类似的产品(closeAIPackyApi),但主要聚焦国外API的中转业务,因此提供的多是经典大模型API,没有特别多的其他模型可以选择。

CC-Switch

统一管理 Claude Code、Codex 与 Gemini CLI 的供应商配置、MCP 服务器、Skills 扩展和系统提示词。

现代 AI 编程依赖于 Claude Code、Codex、Gemini CLI、OpenCode 和 OpenClaw 等 CLI 工具——但每个工具都有自己的配置格式。切换 API 供应商意味着手动编辑 JSON、TOML 或 .env 文件,而在多个工具之间缺乏一个统一管理 MCP, SKILLS 的方式。CC Switch 提供一个桌面应用来管理所有五个 CLI 工具。无需手动编辑配置文件,你将获得一个可视化界面,一键将供应商导入应用,一键在不同的供应商之间进行切换,内置 50+ 供应商预设、统一的 MCP, SKILLS 管理以及系统托盘即时切换功能——所有操作都基于可靠的 SQLite 数据库和原子写入机制,保护你的配置不被损坏。

非常适合多渠道,经常需要模型或者 Coding Agent 切换的人。比如,如果你要修改 Claude Code 的 Backbone LLM,每次都需要重新修改配置文件, CC Switch 提供了一个可视化的界面方便进行模型更换修改,可以视作一个外置的聚合版的 Coding Agent 模型选择器。

Claude Code Router

将 Claude Code 的请求路由到不同的模型,提供一个可视化的界面,更加方便的来管理 Claude Code 的配置。支持 OpenRouter、DeepSeek、Ollama、Gemini、Volcengine 和 SiliconFlow 等各种模型提供商。

Cursor

相比于 Claude Code,这个更像是一个集成的 IDE,充值的方式是直接充会员,然后可以使用多个不同的 Backbone LLM。

参考

jimmysong.io/zh/blog/ope…

rosetears.cn/archives/63…

zhuanlan.zhihu.com/p/194513346…