mirror of
https://github.com/snailyp/gemini-balance.git
synced 2026-06-09 09:39:40 +08:00
feat: 将 StreamOptimizer 参数改为可配置
将 StreamOptimizer 中的硬编码参数改为通过配置文件可配置的参数,提高了系统的灵活性。具体修改包括: 在 .env.example 中添加 stream_optimizer 相关配置参数 在 app/core/config.py 中添加对应的配置项 修改 app/services/chat/stream_optimizer.py 从配置中读取参数 在 README.md 中添加流式输出优化配置的详细说明
This commit is contained in:
@@ -13,3 +13,10 @@ CREATE_IMAGE_MODEL=imagen-3.0-generate-002
|
|||||||
UPLOAD_PROVIDER=smms
|
UPLOAD_PROVIDER=smms
|
||||||
SMMS_SECRET_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
SMMS_SECRET_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
#########################stream_optimizer 相关配置########################
|
||||||
|
STREAM_MIN_DELAY=0.016
|
||||||
|
STREAM_MAX_DELAY=0.024
|
||||||
|
STREAM_SHORT_TEXT_THRESHOLD=10
|
||||||
|
STREAM_LONG_TEXT_THRESHOLD=50
|
||||||
|
STREAM_CHUNK_SIZE=5
|
||||||
|
##########################################################################
|
||||||
|
|||||||
25
README.md
25
README.md
@@ -76,6 +76,13 @@
|
|||||||
# 图片上传配置
|
# 图片上传配置
|
||||||
UPLOAD_PROVIDER="smms" # 图片上传提供商,目前支持smms
|
UPLOAD_PROVIDER="smms" # 图片上传提供商,目前支持smms
|
||||||
SMMS_SECRET_TOKEN="your-smms-token" # SM.MS图床的API Token
|
SMMS_SECRET_TOKEN="your-smms-token" # SM.MS图床的API Token
|
||||||
|
|
||||||
|
# stream_optimizer 相关配置
|
||||||
|
STREAM_MIN_DELAY=0.016
|
||||||
|
STREAM_MAX_DELAY=0.024
|
||||||
|
STREAM_SHORT_TEXT_THRESHOLD=10
|
||||||
|
STREAM_LONG_TEXT_THRESHOLD=50
|
||||||
|
STREAM_CHUNK_SIZE=5
|
||||||
```
|
```
|
||||||
|
|
||||||
### 配置说明
|
### 配置说明
|
||||||
@@ -136,6 +143,24 @@
|
|||||||
- 用途: 用于图片上传到 SM.MS 图床
|
- 用途: 用于图片上传到 SM.MS 图床
|
||||||
- 获取方式: 需要在 SM.MS 官网注册并获取
|
- 获取方式: 需要在 SM.MS 官网注册并获取
|
||||||
|
|
||||||
|
#### 流式输出优化配置
|
||||||
|
|
||||||
|
- `STREAM_MIN_DELAY`: 最小延迟时间
|
||||||
|
- 默认值: `0.016`(秒)
|
||||||
|
- 说明: 长文本输出时使用的最小延迟时间,值越小输出速度越快
|
||||||
|
- `STREAM_MAX_DELAY`: 最大延迟时间
|
||||||
|
- 默认值: `0.024`(秒)
|
||||||
|
- 说明: 短文本输出时使用的最大延迟时间,值越大输出速度越慢
|
||||||
|
- `STREAM_SHORT_TEXT_THRESHOLD`: 短文本阈值
|
||||||
|
- 默认值: `10`(字符)
|
||||||
|
- 说明: 小于此长度的文本被视为短文本,将使用最大延迟输出
|
||||||
|
- `STREAM_LONG_TEXT_THRESHOLD`: 长文本阈值
|
||||||
|
- 默认值: `50`(字符)
|
||||||
|
- 说明: 大于此长度的文本被视为长文本,将使用最小延迟并分块输出
|
||||||
|
- `STREAM_CHUNK_SIZE`: 长文本分块大小
|
||||||
|
- 默认值: `5`(字符)
|
||||||
|
- 说明: 长文本分块输出时,每个块的大小
|
||||||
|
|
||||||
### ▶️ 运行
|
### ▶️ 运行
|
||||||
|
|
||||||
#### 使用 Docker (推荐)
|
#### 使用 Docker (推荐)
|
||||||
|
|||||||
@@ -17,6 +17,13 @@ class Settings(BaseSettings):
|
|||||||
UPLOAD_PROVIDER: str = "smms"
|
UPLOAD_PROVIDER: str = "smms"
|
||||||
SMMS_SECRET_TOKEN: str = ""
|
SMMS_SECRET_TOKEN: str = ""
|
||||||
TEST_MODEL: str = "gemini-1.5-flash"
|
TEST_MODEL: str = "gemini-1.5-flash"
|
||||||
|
|
||||||
|
# 流式输出优化器配置
|
||||||
|
STREAM_MIN_DELAY: float = 0.016
|
||||||
|
STREAM_MAX_DELAY: float = 0.024
|
||||||
|
STREAM_SHORT_TEXT_THRESHOLD: int = 10
|
||||||
|
STREAM_LONG_TEXT_THRESHOLD: int = 50
|
||||||
|
STREAM_CHUNK_SIZE: int = 5
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import asyncio
|
|||||||
import math
|
import math
|
||||||
from typing import Any, List, AsyncGenerator, Callable
|
from typing import Any, List, AsyncGenerator, Callable
|
||||||
from app.core.logger import get_openai_logger, get_gemini_logger
|
from app.core.logger import get_openai_logger, get_gemini_logger
|
||||||
|
from app.core.config import settings
|
||||||
|
|
||||||
logger_openai = get_openai_logger()
|
logger_openai = get_openai_logger()
|
||||||
logger_gemini = get_gemini_logger()
|
logger_gemini = get_gemini_logger()
|
||||||
@@ -112,5 +113,20 @@ class StreamOptimizer:
|
|||||||
|
|
||||||
|
|
||||||
# 创建默认的优化器实例,可以直接导入使用
|
# 创建默认的优化器实例,可以直接导入使用
|
||||||
openai_optimizer = StreamOptimizer(logger=logger_openai)
|
openai_optimizer = StreamOptimizer(
|
||||||
gemini_optimizer = StreamOptimizer(logger=logger_gemini)
|
logger=logger_openai,
|
||||||
|
min_delay=settings.STREAM_MIN_DELAY,
|
||||||
|
max_delay=settings.STREAM_MAX_DELAY,
|
||||||
|
short_text_threshold=settings.STREAM_SHORT_TEXT_THRESHOLD,
|
||||||
|
long_text_threshold=settings.STREAM_LONG_TEXT_THRESHOLD,
|
||||||
|
chunk_size=settings.STREAM_CHUNK_SIZE
|
||||||
|
)
|
||||||
|
|
||||||
|
gemini_optimizer = StreamOptimizer(
|
||||||
|
logger=logger_gemini,
|
||||||
|
min_delay=settings.STREAM_MIN_DELAY,
|
||||||
|
max_delay=settings.STREAM_MAX_DELAY,
|
||||||
|
short_text_threshold=settings.STREAM_SHORT_TEXT_THRESHOLD,
|
||||||
|
long_text_threshold=settings.STREAM_LONG_TEXT_THRESHOLD,
|
||||||
|
chunk_size=settings.STREAM_CHUNK_SIZE
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user