Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 48 49 50 | /** * 前言后记节点 */ import { GraphState } from '../graph'; import { bookStore } from '../book-generator.store'; import { callLLMWithMessages } from '../../../services/llm'; import { FOREWORD_SYSTEM_PROMPT, AFTERWORD_SYSTEM_PROMPT } from '../prompts/templates'; import { PROGRESS } from '../utils'; /** * 前言生成节点 */ export async function writeForewordNode(state: typeof GraphState.State): Promise<Partial<typeof GraphState.State>> { console.log('[LangGraph] 生成前言, bookId:', state.bookId); try { const messages = [ { role: 'system' as const, content: FOREWORD_SYSTEM_PROMPT }, { role: 'user' as const, content: `请为《${state.topic}》撰写前言。` }, ]; const foreword = await callLLMWithMessages(messages); await bookStore.update(state.bookId, { foreword, progress: PROGRESS.FOREWORD_DONE }); return { progress: PROGRESS.FOREWORD_DONE }; } catch (error) { console.error('[LangGraph] 前言生成失败:', error); await bookStore.update(state.bookId, { errorMsg: `前言生成失败: ${error instanceof Error ? error.message : '未知'}` } as any); return { progress: PROGRESS.FOREWORD_DONE, error: '前言生成失败' }; } } /** * 后记生成节点 */ export async function writeAfterwordNode(state: typeof GraphState.State): Promise<Partial<typeof GraphState.State>> { console.log('[LangGraph] 生成后记, bookId:', state.bookId); try { const messages = [ { role: 'system' as const, content: AFTERWORD_SYSTEM_PROMPT }, { role: 'user' as const, content: `请为《${state.topic}》撰写后记。` }, ]; const afterword = await callLLMWithMessages(messages); await bookStore.update(state.bookId, { afterword }); return { finished: true, progress: PROGRESS.AFTERWORD_DONE }; } catch (error) { console.error('[LangGraph] 后记生成失败:', error); await bookStore.update(state.bookId, { errorMsg: `后记生成失败: ${error instanceof Error ? error.message : '未知'}` } as any); return { finished: true, progress: PROGRESS.AFTERWORD_DONE, error: '后记生成失败' }; } } |