GPT-6 Sol 与 GPT-6 Luna 已在 Amazon Bedrock 正式可用。对开发团队来说,真正有价值的并不是模型列表又多了两个名字,而是可以根据任务所需的智能水平、响应效率和运行成本,为不同工作负载选择合适的模型。
与其让所有请求都走同一个模型,更实用的做法是建立一层轻量路由:日常提取、分类和改写使用经过验证的高效率配置;复杂推理、重要决策辅助和长文生成则交给在内部评测中表现更好的模型。
不要只按模型名称做选择
目前可以确认的是,Sol 和 Luna 为 Bedrock 用户增加了新的智能与效率组合。不过,仅凭名称或定位就直接决定生产路由并不稳妥。团队应该使用自己的数据集回答几个具体问题:
- 哪个模型在工单分类、字段提取等日常任务上延迟更低?
- 哪个模型在代码分析、多约束写作或复杂推理上成功率更高?
- 相同任务达到可接受质量时,各自需要多少输出 token?
- 模型在目标 AWS 区域、调用方式和配额下是否可用?
- 错误重试、超时和长输出会怎样影响整体成本?
一个常见的分层方式是:
| 工作负载 | 例子 | 推荐决策方式 |
|---|---|---|
| 例行任务 | 摘要、分类、格式转换、邮件改写 | 优先比较延迟、成本和格式稳定性 |
| 复杂任务 | 多步分析、代码审查、方案比较 | 优先比较正确率、推理完整性和指令遵循 |
| 高风险任务 | 合规判断、财务建议、对外发布 | 模型输出之外增加规则校验与人工审批 |
这里不要预设 Sol 或 Luna 一定属于哪一层。先在 Bedrock 控制台或模型目录中确认实际模型 ID、区域支持和调用接口,再根据评测结果建立映射。
用环境变量建立可替换的模型路由
下面是一个可以直接改造的 Python 示例。它通过 Bedrock Runtime 的 Converse API 调用模型,并用 routine 与 complex 两个业务层级选择模型。运行前,请把环境变量替换为控制台中显示的实际模型 ID。
先安装依赖并配置环境:
python -m pip install --upgrade boto3
export AWS_REGION='us-east-1'
export BEDROCK_MODEL_ROUTINE='替换为评测后用于例行任务的模型ID'
export BEDROCK_MODEL_COMPLEX='替换为评测后用于复杂任务的模型ID'
# AWS 凭证建议通过 aws configure、IAM Role 或工作负载身份提供
aws sts get-caller-identity
将以下内容保存为 bedrock_router.py:
import argparse
import os
import time
import boto3
def require_env(name: str) -> str:
value = os.getenv(name)
if not value:
raise RuntimeError(f'Missing required environment variable: {name}')
return value
def choose_model(tier: str) -> str:
mapping = {
'routine': require_env('BEDROCK_MODEL_ROUTINE'),
'complex': require_env('BEDROCK_MODEL_COMPLEX'),
}
return mapping[tier]
def invoke(prompt: str, tier: str) -> None:
region = os.getenv('AWS_REGION', 'us-east-1')
client = boto3.client('bedrock-runtime', region_name=region)
model_id = choose_model(tier)
started = time.perf_counter()
response = client.converse(
modelId=model_id,
system=[
{
'text': (
'You are a precise workplace assistant. '
'State uncertainty explicitly and do not invent facts.'
)
}
],
messages=[
{
'role': 'user',
'content': [{'text': prompt}],
}
],
inferenceConfig={
'maxTokens': 800,
'temperature': 0.2,
},
)
elapsed_ms = (time.perf_counter() - started) * 1000
blocks = response['output']['message']['content']
text = '\n'.join(block['text'] for block in blocks if 'text' in block)
print(text)
print(f'\n---\nmodel={model_id} tier={tier} latency_ms={elapsed_ms:.0f}')
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--tier', choices=['routine', 'complex'], required=True)
parser.add_argument('prompt')
args = parser.parse_args()
invoke(args.prompt, args.tier)
调用例行任务:
python bedrock_router.py --tier routine \
'把下面的客户反馈分类为功能请求、故障或咨询,并返回 JSON:导出按钮点击后没有反应。'
调用复杂任务:
python bedrock_router.py --tier complex \
'比较蓝绿发布与金丝雀发布在高流量支付系统中的风险,并给出带回滚条件的建议。'
这个示例故意没有把 Sol 或 Luna 写死在代码里。模型分工是部署配置,而不是业务逻辑;评测结果变化、区域迁移或配额调整时,只需修改环境变量。
如果某个模型或区域不支持 Converse API,应按照对应模型的 Bedrock 文档调整请求格式,而不要假设所有模型具有完全相同的参数集合。
评测时同时记录质量与效率
单看一次响应很容易得出错误结论。可以准备一组覆盖真实业务的数据,并为每条样本保存以下指标:
{
"case_id": "support-017",
"task_type": "ticket_classification",
"model_alias": "candidate-a",
"correct": true,
"format_valid": true,
"latency_ms": 842,
"input_tokens": 316,
"output_tokens": 74,
"human_score": 4
}
评测集至少应包含正常输入、模糊请求、超长文本、提示注入以及要求严格 JSON 输出的样本。分类任务可统计准确率和格式通过率,生成任务则适合结合人工评分、事实核验与延迟分位数。
路由规则也应保持可解释。例如:
- 批量标签、短摘要和结构化抽取默认进入例行层。
- 涉及多个文档、复杂约束或代码推理时进入复杂层。
- 涉及监管、付款、权限变更或公开发布时强制人工确认。
- 复杂层超时后不要静默降级;应明确返回错误,或将任务放入异步队列。
上线前别忽略治理边界
Bedrock 解决了模型访问入口问题,但不会自动替团队完成数据治理。投入生产前,应检查:
- IAM 策略是否只允许调用批准的模型和资源。
- 日志中是否意外记录客户数据、密钥或完整提示词。
- 输入输出是否经过敏感信息过滤与业务规则校验。
- 应用是否设置超时、有限重试、并发控制和预算告警。
- 模型 ID、提示词版本和路由结果是否可追踪。
- 区域可用性、配额、价格和模型能力是否以当前 AWS 配置为准。
建议从一条可测量的工作流开始
引入 GPT-6 Sol 与 Luna 时,不必立即重构全部 AI 功能。选择一个请求量稳定、质量可以量化的流程,例如客服工单分类或内部文档摘要,让两个模型运行同一批测试样本,再决定例行层与复杂层的映射。
当质量、延迟和成本数据足够清晰后,再把模型路由扩展到更多场景。这样既能利用 Bedrock 提供的新选择,也能避免把“更智能”误解为“所有请求都应该调用同一个最强配置”。