常用接入术语
| 名称 | 常见含义 | 使用提示 |
|---|
| Claude中转 | 把请求转发到可用 Claude 模型的接入方式 | 核对协议和模型权限 |
| Claude中转站 | 提供 Claude 密钥、额度和路由管理的平台 | Claude 客户端通常关注 Anthropic 协议 |
| API中转 | 通过兼容接口转发不同模型请求 | 本文标题使用这一常见称呼 |
| API中转站 | 提供统一 API 接入、模型选择和用量管理的服务 | 本文使用 OpenAI Chat Completions 方式 |
接入架构
| 环节 | 职责 | 注意事项 |
|---|
| Python 应用 | 保存文档、提示词和查询逻辑 | 密钥不写入源码 |
| Lla**Index | 组织文档节点、索引和查询引擎 | 先用最小流程验证 |
| OpenAILike | 调用 OpenAI 兼容 Chat Completions | is_chat_model 设置为 True |
| KingFlow AI | 认证密钥并路由模型请求 | *ase **L 填写到 /v1 |
| 目标模型 | 生成摘要和文档问答结果 | 完整模型 ID 以控制台为准 |
接入优势
- OpenAILike 专门面向第三方 OpenAI 兼容接口,可以显式设置端点、超时、重试和上下文窗口。
- Lla**Index 把文档加载、切分、索引、检索和回答拆成独立环节,便于逐步替换组件。
- Sum**ryIndex 不需要嵌入接口,适合先验证 LLM 连接和小规模文档问答。
- 正式 RAG 可以增加独立嵌入模型与向量数据库,生成模型接入配置无需随之改写。
- KingFlow 控制台集中管理模型、密钥和用量,便于隔离不同环境。
开始前的准备
- 准备 Python 3.10 或更高版本,并安装 uv。
- 在 KingFlow AI 控制台创建以 sk- 开头的 API Key,确认余额和模型分组可用。
- 复制目标模型的完整模型 ID,并确认上下文窗口满足待处理文档长度。
- 准备少量脱敏测试文本,首次联调不要直接加载生产知识库。
- 确认运行环境可以访问 api.**nju**shen.com。
创建 Lla**Index 测试项目
uv init lla**index-kingflow-demo
cd lla**index-kingflow-demo
uv add lla**-index-core lla**-index-llms-openai-like python-dotenv
验证 KingFlow 基础接口
curl https://api.**nju**shen.com/v1/chat/completions \
-H "Authorization: *earer sk-你的密钥" \
-H "Content-Type: application/json" \
-d '{
"model": "<KingFlow控制台中的完整模型ID>",
"messages": [{"role": "user", "content": "只回复 LLAMAINDEX_READY"}],
"stream": false
}'
配置环境变量
KINGFLOW_*ASE_**L=https://api.**nju**shen.com/v1
KINGFLOW_API_KEY=sk-你的密钥
KINGFLOW_MODEL=<KingFlow控制台中的完整模型ID>
.env
.venv/
__pycache__/
storage/
编写最小文档问答示例
import os
from dotenv import load_dotenv
from lla**_index.core import Document, Settings, Sum**ryIndex
from lla**_index.llms.openai_like import OpenAILike
load_dotenv()
llm = OpenAILike(
model=os.environ["KINGFLOW_MODEL"],
api_*ase=os.environ["KINGFLOW_*ASE_**L"],
api_key=os.environ["KINGFLOW_API_KEY"],
is_chat_model=True,
is_function_calling_model=False,
context_window=32000,
**x_tokens=800,
temperature=0.2,
timeout=60,
**x_retries=2,
)
Settings.llm = llm
ready = llm.complete("只回复 LLAMAINDEX_CONNECTED")
print(str(ready))
documents = [
Document(
text=(
"上线要求:密钥必须放在 Secret 中;正式环境必须设置额度;"
"日志不得记录完整密钥;高风险操作需要人工审批。"
)
),
Document(
text=(
"验收要求:基础接口返回成功;模型 ID 与控制台一致;"
"错误码、耗时和 Token 用量可以追踪。"
)
),
]
index = Sum**ryIndex.from_documents(documents)
query_engine = index.as_query_engine(response_mode="compact")
response = query_engine.query(
"请只根据文档列出上线前检查项,并按安全和验收分类。"
)
print(response)
观察流式输出
for part in llm.stream_complete("用三点说明文档问答的验收方法"):
print(part.delta or "", end="")