File size: 2,140 Bytes
439ab17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import pandas as pd
from model_handler import ModelHandler
from config import LING_1T
from .agent_common_utils import format_df_to_string

def fetch_paragraph_continuation_agent(prompt: str, editor_content: str, style: str, kb_df: pd.DataFrame, short_outline_df: pd.DataFrame, long_outline_df: pd.DataFrame):
    """
    Agent for fetching a single paragraph continuation (Ribbon UI version).
    """
    print("\n[Agent][fetch_paragraph_continuation_agent] === 推理类型:整段续写 (Single) ===")
    try:
        # 1. Format context
        style_context = f"### 整体章程\n{style}\n\n"
        kb_context = format_df_to_string(kb_df, "知识库")
        short_outline_context = format_df_to_string(short_outline_df, "当前章节大纲")
        long_outline_context = format_df_to_string(long_outline_df, "故事总纲")

        # 2. Build System Prompt
        system_prompt = (
            "你是一个富有创意的长篇小说家。请根据提供的背景设定和当前文本,自然地续写一段高质量的剧情。\n"
            "请直接输出续写内容,不要包含任何解释、前缀或后缀。"
        )
        
        # 3. Build User Prompt
        full_context = style_context + kb_context + long_outline_context + short_outline_context
        user_instruction = prompt if prompt else '请基于当前内容,自然地延续剧情,写一个完整的段落。'
        user_prompt = (
            f"### 背景设定与大纲\n{full_context}\n"
            f"### 当前已写内容 (末尾部分)\n{editor_content[-2000:]}\n\n"
            f"### 用户指令\n{user_instruction}"
        )

        # 4. Call LLM
        model_handler = ModelHandler()
        response_generator = model_handler.generate_code(
            system_prompt=system_prompt,
            user_prompt=user_prompt,
            model_choice=LING_1T
        )
        
        full_response = "".join(chunk for chunk in response_generator)
        return full_response.strip()

    except Exception as e:
        print(f"[Agent] Error fetching paragraph continuation: {e}")
        return f"获取续写时出错: {e}"