update:1.优化章节管理(1->N)模式下支持修改章节标题 2.AI创作章节内容支持加载模型列表,使用不同模型创作
This commit is contained in:
@@ -953,6 +953,7 @@ async def generate_chapter_content_stream(
|
||||
style_id = generate_request.style_id
|
||||
target_word_count = generate_request.target_word_count or 3000
|
||||
enable_mcp = generate_request.enable_mcp if hasattr(generate_request, 'enable_mcp') else True
|
||||
custom_model = generate_request.model if hasattr(generate_request, 'model') else None
|
||||
# 预先验证章节存在性(使用临时会话)
|
||||
async for temp_db in get_db(request):
|
||||
try:
|
||||
@@ -1310,12 +1311,20 @@ async def generate_chapter_content_stream(
|
||||
|
||||
logger.info(f"开始AI流式创作章节 {chapter_id}")
|
||||
|
||||
# 准备生成参数
|
||||
generate_kwargs = {"prompt": prompt}
|
||||
if custom_model:
|
||||
logger.info(f" 使用自定义模型: {custom_model}")
|
||||
generate_kwargs["model"] = custom_model
|
||||
# 注意:这里使用用户配置的AI服务,模型参数会覆盖默认模型
|
||||
# 如果需要切换provider,需要在前端传递provider参数
|
||||
|
||||
# 流式生成内容
|
||||
full_content = ""
|
||||
chunk_count = 0
|
||||
last_progress = 0
|
||||
|
||||
async for chunk in user_ai_service.generate_text_stream(prompt=prompt):
|
||||
async for chunk in user_ai_service.generate_text_stream(**generate_kwargs):
|
||||
full_content += chunk
|
||||
chunk_count += 1
|
||||
|
||||
@@ -2494,7 +2503,10 @@ async def generate_single_chapter_for_batch(
|
||||
|
||||
# 非流式生成内容
|
||||
full_content = ""
|
||||
async for chunk in ai_service.generate_text_stream(prompt=prompt):
|
||||
async for chunk in ai_service.generate_text_stream(
|
||||
prompt=prompt,
|
||||
model=None # 批量生成时使用用户默认模型,后续可扩展
|
||||
):
|
||||
full_content += chunk
|
||||
|
||||
# 更新章节内容到数据库(使用锁保护)
|
||||
|
||||
@@ -78,6 +78,7 @@ class ChapterGenerateRequest(BaseModel):
|
||||
le=10000 # 最大10000字
|
||||
)
|
||||
enable_mcp: bool = Field(True, description="是否启用MCP工具增强(搜索参考资料)")
|
||||
model: Optional[str] = Field(None, description="指定使用的AI模型,不提供则使用用户默认模型")
|
||||
|
||||
|
||||
class BatchGenerateRequest(BaseModel):
|
||||
@@ -94,6 +95,7 @@ class BatchGenerateRequest(BaseModel):
|
||||
enable_analysis: bool = Field(False, description="是否启用同步分析")
|
||||
enable_mcp: bool = Field(True, description="是否启用MCP工具增强(搜索参考资料)")
|
||||
max_retries: int = Field(3, description="每个章节的最大重试次数", ge=0, le=5)
|
||||
model: Optional[str] = Field(None, description="指定使用的AI模型,不提供则使用用户默认模型")
|
||||
|
||||
|
||||
class BatchGenerateResponse(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user