概览
GoModel 在/v1/conversations 下提供兼容 OpenAI 的 Conversations API 端点。
对话是一种由网关管理的资源。OpenAI Conversations API 是特定于提供商的,
因此由 GoModel 生成对话 ID 并自行存储对话。这样无论您的模型流量路由到哪个提供商,
/v1/conversations 都能保持可用且行为一致,并且无需任何提供商配置。
支持的端点
对话对象
metadata 始终存在,为空时序列化为 {}。
限制
GoModel 遵循 OpenAI Conversations 的限制,以保持公开接口的兼容性:items:创建时最多 20 个条目。metadata:最多 16 个键值对;键最长 64 个字符;值最长 512 个字符。
order=desc),每页 20 个条目。将返回的 last_id
作为下一次请求的 after 游标。limit 最多接受 100 个条目。可选的 include 参数接受与
OpenAI Conversations API 相同的值,包括 reasoning.encrypted_content 和
message.output_text.logprobs。GoModel 存储完整的条目负载,因此可选字段在之后的请求中依然可用,
而响应中只返回 include 指定的字段。
存储与保留
常规的 GoModel 应用会将对话存储在已配置的共享存储后端(sqlite、postgresql 或 mongodb)中,
因此进程重启后对话依然存在。对话快照在 30 天后过期。
仅当嵌入 HTTP 服务器且未配置应用存储时(例如轻量级测试),才会使用内存回退存储。
该回退存储同样会在 30 天后使条目过期,并最多保留 10,000 个对话,超出时优先淘汰最旧的对话。
错误
GoModel 返回兼容 OpenAI 的错误:400 invalid_request_error:请求体无效、更新时缺少metadata、条目无效或超出限制(param字段会指明出错的字段)。404 not_found_error:对话或请求的条目不存在。- 带有
param: "after"的404 invalid_request_error:分页游标未指向该对话中的任何条目。
/v1/responses 轮次的一部分。如果提供商调用成功,但已完成的交互无法存储,
非流式请求会返回 500;流式请求会在不发出
response.completed 的情况下结束。GoModel 目前不会对客户端针对该失败请求的重试进行去重,
因此重试可能会再次调用提供商并再次产生费用。失败的交互不会出现在对话历史中,
因此无法通过检查历史可靠地判断提供商调用是否已经执行。当重复调用会带来实际成本或副作用时,
请避免自动重试,或通过独立的持久化幂等机制来协调重试。