update docs
This commit is contained in:
26
README.md
26
README.md
@@ -8,7 +8,7 @@
|
||||
- 支持所有类型的接口 (`/v1/*`)
|
||||
- 提供 Prometheus Metrics 统计接口 (`/v1/metrics`)
|
||||
- 按照定义顺序请求 OpenAI 上游
|
||||
- 识别 ChatCompletions Stream 请求,针对 Stream 请求使用 5 秒超时。对于其他请求使用 60 秒超时。
|
||||
- 识别 ChatCompletions Stream 请求,针对 Stream 请求使用 5 秒超时。具体超时策略请参阅 [超时策略](#超时策略) 一节
|
||||
- 记录完整的请求内容、使用的上游、IP 地址、响应时间以及 GPT 回复文本
|
||||
- 请求出错时发送 飞书 或 Matrix 消息通知
|
||||
|
||||
@@ -99,3 +99,27 @@ upstreams:
|
||||
请注意,程序会根据情况修改 timeout 的值
|
||||
|
||||
您可以直接运行 `./openai-api-route` 命令,如果数据库不存在,系统会自动创建。
|
||||
|
||||
## 超时策略
|
||||
|
||||
在处理上游请求时,超时策略是确保服务稳定性和响应性的关键因素。本服务通过配置文件中的 `Upstreams` 部分来定义多个上游服务器。每个上游服务器都有自己的 `Endpoint` 和 `SK`(可能是密钥或特殊标识)。服务会按照配置文件中的顺序依次尝试每个上游服务器,直到请求成功或所有上游服务器都已尝试。
|
||||
|
||||
### 单一上游配置
|
||||
|
||||
当配置文件中只定义了一个上游服务器时,该上游的超时时间将被设置为 120 秒。这意味着,如果请求没有在 120 秒内得到上游服务器的响应,服务将会中止该请求并可能返回错误。
|
||||
|
||||
### 多上游配置
|
||||
|
||||
如果配置文件中定义了多个上游服务器,服务将会按照定义的顺序依次尝试每个上游。对于每个上游服务器,服务会检查其 `Endpoint` 和 `SK` 是否有效。如果任一字段为空,服务将返回 500 错误,并记录无效的上游信息。
|
||||
|
||||
### 超时策略细节
|
||||
|
||||
服务在处理请求时会根据不同的条件设置不同的超时时间。超时时间是指服务等待上游服务器响应的最大时间。以下是超时时间的设置规则:
|
||||
|
||||
1. **默认超时时间**:如果没有特殊条件,服务将使用默认的超时时间,即60秒。
|
||||
|
||||
2. **流式请求**:如果请求体被识别为流式(`requestBody.Stream` 为 `true`),并且请求体检查(`requestBodyOK`)没有发现问题,超时时间将被设置为5秒。这适用于那些预期会快速响应的流式请求。
|
||||
|
||||
3. **大请求体**:如果请求体的大小超过128KB(即 `len(inBody) > 1024*128`),超时时间将被设置为20秒。这考虑到了处理大型数据可能需要更长的时间。
|
||||
|
||||
4. **上游超时配置**:如果上游服务器在配置中指定了超时时间(`upstream.Timeout` 大于0),服务将使用该值作为超时时间。这个值是以秒为单位的。
|
||||
|
||||
Reference in New Issue
Block a user