From bde89de5cee525160f113db4520f560610bd1750 Mon Sep 17 00:00:00 2001 From: tinix-ai Date: Wed, 18 Mar 2026 08:40:54 +0700 Subject: [PATCH] feat: implement core UI tabs, API backend management, and initial service infrastructure. --- README.md | 2 + data/tinix_story.db-shm | Bin 32768 -> 32768 bytes data/tinix_story.db-wal | Bin 0 -> 729272 bytes data/writing_styles.json | 106 +++++++++ locales/VI/huong_dan_su_dung.md | 24 ++- locales/VI/messages.json | 8 +- scripts/fill_subgenres.py | 75 +++++++ services/data/sub_genres.json | 200 ++++++++--------- services/novel_generator.py | 119 ++++++++-- services/style_manager.py | 135 ++++++++++++ ui/continue_tab.py | 34 ++- ui/create_tab.py | 22 +- ui/polish_tab.py | 14 +- ui/projects_tab.py | 5 +- ui/rewrite_tab.py | 40 ++-- ui/settings_tab.py | 372 +++++++++++++++++++++++--------- 16 files changed, 898 insertions(+), 258 deletions(-) create mode 100644 data/writing_styles.json create mode 100644 scripts/fill_subgenres.py create mode 100644 services/style_manager.py diff --git a/README.md b/README.md index 371b6f3..b413ca0 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ - **🔄 Smart Rewrite**: Upload your existing text and rewrite it using 17 high-quality, preset styles (e.g., Eastern Fantasy, Hard Sci-Fi, Urban Romance, Horror, etc.). - **📖 Smart Continue**: Upload a partially written novel. The AI will analyze the context, characters, and world-building, and automatically continue the story maintaining your style and tone. - **✨ Novel Polish**: Advanced polishing tools with 8 specific modes: General Polish, Find Errors, Improvement Suggestions, Direct Edit, Remove AI Tone, Enhance Details, Optimize Dialogue, and Improve Pacing. +- **🎭 Diverse Web Novel Styles**: Natively supports 30+ highly-specialized web novel genres and styles like Eastern Fantasy (Xianxia/Wuxia), System Face-slapping, Sci-Fi Mecha, Infinite Flow, Sweet Pet Romance, Slice of Life, eSports, Dark Fantasy, and more. AI will meticulously adapt vocabulary, pacing, and tone to fit the chosen sub-culture. +- **🧠 Self-Reflection Check**: A built-in critique loop where the AI generates a draft, reviews it against the outline to detect logic flaws or "AI tone", and rewrites a perfect version before saving. - **📄 Flexible File Parsing**: Upload your own files (`.txt`, `.pdf`, `.epub`, `.md`, `.docx`). The system supports multiple parsing mechanisms including auto-split, split by word count, and split by custom Regex patterns. - **💾 Multi-Format Export**: Export your completed or in-progress projects into Word (`.docx`), Plain Text (`.txt`), Markdown (`.md`), or HTML (`.html`) with a single click. - **📂 Project Management**: Manage multiple novel projects simultaneously. Track completion percentage, chapter counts, update dates, and manage generation cache. diff --git a/data/tinix_story.db-shm b/data/tinix_story.db-shm index fe9ac2845eca6fe6da8a63cd096d9cf9e24ece10..8dd32b34a22e8d4c78d5dabe13b751f40b716d5d 100644 GIT binary patch literal 32768 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

Xd)O93s*xR&5ib_vK{_{!c!E+0c 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

cSp^fF(^KTfMmmsV^rX_aVxMS|*g<}tU} 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⁣HjnJzx9w?K7>B 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≫cFH)UhNcGNqFk!=pD%)5ajx~#4kKx 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 literal 0 HcmV?d00001 diff --git a/data/writing_styles.json b/data/writing_styles.json new file mode 100644 index 0000000..8fade89 --- /dev/null +++ b/data/writing_styles.json @@ -0,0 +1,106 @@ +[ + { + "name": "Mượt mà tự nhiên, cốt truyện chặt chẽ, nhân vật tinh tế", + "description": "Văn phong trơn tru, dễ đọc, mạch truyện logic xuyên suốt không có sạn. Xây dựng tâm lý và hành động nhân vật sâu sắc, nhất quán." + }, + { + "name": "Văn phong đẹp, ý cảnh sâu xa", + "description": "Sử dụng từ ngữ trau chuốt, giàu hình ảnh và các phép tu từ. Tập trung miêu tả cảnh vật, nội tâm nhân vật để tạo ra một không gian nghệ thuật đầy cảm xúc." + }, + { + "name": "Nhịp nhanh, cốt truyện kịch tính", + "description": "Tập trung vào hành động, xung đột và diễn biến câu chuyện. Cắt giảm tối đa miêu tả thừa thãi, đưa người đọc đi từ bất ngờ này đến bất ngờ khác." + }, + { + "name": "Mô tả tinh tế, cảm xúc phong phú", + "description": "Chú trọng vào việc thể hiện cảm xúc, rung động tinh vi của nhân vật. Các chi tiết nhỏ trong bối cảnh và tương tác được dùng để tô đậm không khí truyện." + }, + { + "name": "Hài hước thú vị, nhẹ nhàng vui vẻ", + "description": "Sử dụng ngôn ngữ hóm hỉnh, tình huống hài hước dở khóc dở cười. Xoay quanh những mẩu chuyện đời thường hoặc hành trình nhẹ nhàng mang tính giải trí cao." + }, + { + "name": "Cổ phong nhã vận cổ điển", + "description": "Ngôn từ trang nghiêm, Hán Việt dày (thiên địa vô tình, đạo hữu, tiên tử...), câu văn dài, triết lý Đạo/Phật nặng, miêu tả thơ mộng thiên địa. Ít đối thoại hiện đại. (Ví dụ: Nhĩ Căn - Tiên Nghịch, Cầu Ma)." + }, + { + "name": "Sảng khoái cực độ (Sảng văn)", + "description": "Câu ngắn gọn, nhịp nhanh, miêu tả chiến đấu 'một chưởng phá thiên', lặp motif sảng (cười lạnh, mắt lóe sát cơ, giận dữ ngút trời). Đối thoại mạnh mẽ, đánh mặt liên tục." + }, + { + "name": "Hắc ám u ám", + "description": "Văn lạnh lẽo, tàn nhẫn, miêu tả tâm lý đen tối, giết chóc chi tiết máu me, thế giới bi quan, ít sảng khoái. (Ví dụ: Cổ Chân Nhân)." + }, + { + "name": "Hài hước lầy lội", + "description": "Đối thoại troll, main mặt dày tự trào, pha meme + cổ phong, câu văn nhẹ nhàng vui nhộn, nhiều tình huống 'lầy'. (Ví dụ: Nhất Niệm Vĩnh Hằng)." + }, + { + "name": "Miêu tả chi tiết chậm rãi", + "description": "Xây dựng cực kỹ (luyện đan, trận pháp, bí cảnh), câu dài, chậm burn, ít hành động nhanh, tập trung 'nghề nghiệp tu luyện'. (Ví dụ: Phàm Nhân Tu Tiên)." + }, + { + "name": "Triết lý nội tâm sâu sắc", + "description": "Đoạn độc thoại dài về đạo tâm, nhân quả, nhân sinh, văn trầm lắng suy tư. (Ví dụ: Tiên Nghịch phần sau)." + }, + { + "name": "Hỗn hợp hiện đại cổ phong", + "description": "Pha từ hiện đại (level up, cheat, vibe), đối thoại hơi Gen Z nhưng giữ khung cổ. (Xu hướng truyện mới lai)." + }, + { + "name": "Ngọt sủng rắc đường (甜宠文)", + "description": "Văn phong mềm mại, ấm áp, tương tác nam nữ chính cực kỳ \"ngọt ngào\", không cẩu huyết, không ngược, mọi hiểu lầm đều giải quyết nhanh gọn." + }, + { + "name": "Hồi hộp giật gân (Huyền nghi)", + "description": "Câu văn ngắn gọn, chú trọng miêu tả không khí u ám, lạnh lẽo, dẫn dắt tâm lý rùng rợn, tạo điểm mù và plot twist liên tục. Tốc độ dồn dập." + }, + { + "name": "Điền văn sinh hoạt (Chậm nhiệt / Slice of Life)", + "description": "Nhịp điệu cực kỳ chậm rãi. Tập trung vào miêu tả nấu ăn, trồng trọt, đối thoại gia đình ấm cúng. Câu văn bình dị, không drama to tát, mang tính \"chữa lành\"." + }, + { + "name": "Trang bức vả mặt (Hệ thống / Đô thị sảng văn)", + "description": "Kết cấu chương kiểu \"bị khinh bỉ -> thể hiện tài năng -> mọi người khiếp sợ\". Ngôn từ mang tính phóng đại cảm xúc của đám đông (hít một hơi cạn khí, mở to hai mắt, run lẩy bẩy). Nhấn mạnh vào sự chênh lệch đẳng cấp." + }, + { + "name": "Thế giới tinh tế / Sci-fi (Cơ giáp)", + "description": "Sử dụng nhiều thuật ngữ khoa học viễn tưởng, không gian, thiết bị công nghệ cao, gen, tinh hạm. Câu văn gãy gọn, logic, tập trung vào chiến đấu mô phỏng và chiến thuật vĩ mô." + }, + { + "name": "Quan trường quyền mưu (Cung đấu / Gia đấu)", + "description": "Từ ngữ hoa mỹ, vòng vèo, một câu mang nhiều tầng ý nghĩa ẩn dụ. Đối thoại đầy tính toán, giấu giếm sát cơ, ít hành động bạo lực trực tiếp, chủ yếu đấu trí bằng ngôn từ và lợi ích." + }, + { + "name": "Thanh xuân vườn trường", + "description": "Câu văn trong sáng, nhẹ nhàng, đan xen những suy nghĩ ngây ngô hoặc bồng bột của tuổi trẻ. Miêu tả nhiều về trường lớp, thầy cô, rung động đầu đời, áp lực thi cử." + }, + { + "name": "Ngược luyến tàn tâm (Ngược văn)", + "description": "Cốt truyện đầy hiểu lầm, bi kịch dồn dập. Câu văn xoáy sâu vào nỗi đau thể xác lẫn tinh thần của nhân vật, miêu tả nước mắt, sự tuyệt vọng, sự giằng xé nội tâm. Kết cấu thường đẩy nhân vật vào đường cùng." + }, + { + "name": "Vô hạn lưu (Nhiệm vụ sinh tử)", + "description": "Nhịp độ cực nhanh, dồn dập. Chuyển cảnh logic giữa các thế giới khác nhau. Tập trung vào tính toán luật chơi (rules), giải đố sinh tử. Áp lực thời gian đè nặng trong từng câu chữ." + }, + { + "name": "Quần tượng liệt truyện (Nhiều nhân vật chính)", + "description": "Không tập trung vào một cá nhân mà miêu tả đan xen nhiều góc nhìn (POV). Cần sự tinh tế trong việc thay đổi giọng văn tùy theo nhân vật đang làm trung tâm. Bối cảnh rộng lớn, sử thi." + }, + { + "name": "Quân sự chiến tranh", + "description": "Sử dụng thuật ngữ quân sự, vũ khí học, chiến lược chiến thuật. Văn phong trầm hùng, miêu tả sắc nét sự khốc liệt của chiến trường, máu và mồ hôi, tinh thần đồng đội nồng đậm." + }, + { + "name": "Đam mỹ/Bách hợp tinh tế", + "description": "Đào sâu vào cảm xúc, sự phát triển tình cảm tự nhiên giữa các nhân vật đồng giới. Miêu tả sự thấu hiểu nội tâm, những rung động nhỏ nhất, có thể lồng ghép bối cảnh hiện đại, cổ trang hoặc viễn tưởng." + }, + { + "name": "Đồng nhân (Fanfiction)", + "description": "Bắt chước sát nhất có thể giọng văn và tính cách nhân vật của tác phẩm gốc (Ví dụ: HP, Naruto, Marvel). Kết hợp các tình tiết nguyên tác với sự phát triển sự kiện mới của tác giả." + }, + { + "name": "Võng du eSports", + "description": "Sử dụng ngôn ngữ game thủ (combat, gank, AP, AD, loot đồ...). Tốc độ trận đấu nhanh, mô phỏng thao tác bàn phím, con chuột, tâm sinh lý thi đấu đỉnh cao và tiếng hò reo của khán đài." + } +] diff --git a/locales/VI/huong_dan_su_dung.md b/locales/VI/huong_dan_su_dung.md index 0e81ae7..127254f 100644 --- a/locales/VI/huong_dan_su_dung.md +++ b/locales/VI/huong_dan_su_dung.md @@ -59,29 +59,37 @@ Trước khi bắt đầu sáng tác, bạn **bắt buộc** phải cấu hình --- -## ✍️ 3. Các tính năng sáng tác cốt lõi +## 💎 3. Các tính năng Nổi bật Khác Biệt -### 3.1. Sáng tác từ con số không (Create from Scratch) +- **🎭 Đa dạng văn phong Truyện Mạng**: Hỗ trợ xuất sắc hơn 30+ thể loại và văn phong chuyên sâu nhất của giới tiểu thuyết mạng hiện nay: Cổ phong nhã vận (Tiên Hiệp), Sảng khoái cực độ (Hệ thống vả mặt), Hắc ám u ám, Ngọt sủng rắc đường, Hồi hộp giật gân, Điền văn sinh hoạt, Thế giới tinh tế (Cơ giáp/Sci-fi), Quan trường quyền mưu, Thanh xuân vườn trường, Ngược luyến tàn tâm, Vô hạn lưu, Quần tượng liệt truyện, eSports, Đồng nhân, v.v. AI sẽ tự động thay đổi từ vựng, nhịp độ và giọng điệu chuẩn xác với văn hóa của từng dòng truyện. +- **🧠 Chế độ Tự Kiểm Duyệt (Self-Reflection)**: Không như các công cụ tạo văn bản thông thường, TiniX Story tích hợp quy trình "Biên tập viên AI" ẩn. Ở chế độ này, AI viết nháp một bản, tự đối chiếu với dàn ý để bắt lỗi logic, sự lan man, sai tính cách nhân vật hoặc "văn phong robot", sau đó tự động đập đi viết lại một phiên bản hoàn hảo 100% tiếng Việt thuần túy trước khi lưu. +- **🛡️ Mạch truyện nhất quán**: Hệ thống tích hợp khả năng nhét ngữ cảnh (context window) siêu việt qua cơ chế tóm tắt linh hoạt (theo Toàn văn hoặc Tóm tắt các chương), kết hợp với bảng check-list mạch lạc nghiêm ngặt để đảm bảo AI phát triển tiếp tuyến truyện chính mà không bị "quên" nhân vật cũ hay lặp đi lặp lại một tình tiết. + +--- + +## ✍️ 4. Các tính năng sáng tác thường quy + +### 4.1. Sáng tác từ con số không (Create from Scratch) Chức năng này dành cho việc xây dựng một bộ tiểu thuyết hoàn toàn mới. - Điền các thông tin cơ bản: Tên tiểu thuyết, Thể loại, Chủ đề phụ. - Nhấp **✨ Nhận cảm hứng trí tuệ nhân tạo** để gợi ý Tên sách, Tuyến nhân vật, Thế giới quan. - Sau khi có đủ Thiết lập, nhấp **Tạo dàn ý**. Phải đảm bảo dàn ý tuân thủ cấu trúc mỗi dòng một chương để hệ thống nhận diện đúng. - Bấm **Bắt đầu tạo / Tiếp tục** để AI bắt đầu viết từng chương. Hệ thống tự động ghi nhớ bối cảnh (context) từ các chương trước. -### 3.2. Chế độ Viết lại (Rewrite Mode) +### 4.2. Chế độ Viết lại (Rewrite Mode) Chức năng dùng để thay đổi văn phong của một đoạn văn bản có sẵn. - Tải tệp lên (TXT, DOCX, v.v.) hoặc dán trực tiếp. - Lựa chọn cách phân đoạn để AI không bị quá tải: Tự động, theo số lượng chữ, hoặc theo biểu thức/cụm từ tùy chỉnh (VD: Phân tách theo "Chương"). -- Chọn một trong **17 phong cách văn học** (Tiên hiệp, Lãng mạn đô thị, Kinh dị, Khoa học viễn tưởng, Hardcore...). +- Chọn một trong **hơn 30 phong cách văn học** (Tiên hiệp, Cổ phong, Lãng mạn đô thị, Kinh dị, Sảng văn, Vô hạn lưu, v.v...). - Bấm **Bắt đầu viết lại**. Hệ thống sẽ chạy và bạn có thể theo dõi trực tiếp. -### 3.3. Chế độ Viết tiếp (Continue Mode) +### 4.3. Chế độ Viết tiếp (Continue Mode) Dành cho trường hợp bạn viết dở hoặc có một tác phẩm đang dang dở. - Điền các thiết lập nhân vật, thế giới quan (nếu có, để AI nắm bắt tốt hơn). - Cung cấp nội dung văn bản phần trước. - AI sẽ phân tích văn phong, giọng văn và tự động viết tiếp cốt truyện một cách logic. -### 3.4. Trau chuốt tiểu thuyết (Novel Polish) +### 4.4. Trau chuốt tiểu thuyết (Novel Polish) Giống như một biên tập viên chuyên nghiệp rà soát lại tác phẩm của bạn. - Cung cấp văn bản thô. - Chọn loại hình trau chuốt: @@ -93,14 +101,14 @@ Giống như một biên tập viên chuyên nghiệp rà soát lại tác phẩ --- -## 📂 4. Quản lý Dự án & Xuất file +## 📂 5. Quản lý Dự án & Xuất file - **Thẻ Quản lý Dự án:** Mọi dự án bạn tạo (Sáng tác, Viết lại, Viết tiếp) đều được tự động lưu trữ tại đây. Bạn có thể xem **Tiến độ hoàn thành**, số lượng chương. Nếu bạn muốn tạm ngưng, cứ tắt app; sau đó vào đây chọn dự án và bấm **Viết tiếp (Continue)** để khôi phục tiến trình. - **Thẻ Xuất (Export):** Cho phép bạn xuất dự án hoàn chỉnh ra nhiều định dạng chuyên nghiệp như `.docx` (Word), `.txt`, `.md` hoặc `.html`. Rất tiện lợi để gửi cho tòa soạn hoặc đăng tải lên các nền tảng đọc truyện online. --- -## 🛠 5. Khắc phục sự cố (Troubleshooting) +## 🛠 6. Khắc phục sự cố (Troubleshooting) | Vấn đề | Nguyên nhân & Cách giải quyết | |--------|------------------------------| diff --git a/locales/VI/messages.json b/locales/VI/messages.json index 67fa8e6..cf1fb57 100644 --- a/locales/VI/messages.json +++ b/locales/VI/messages.json @@ -589,7 +589,7 @@ "prompts": { "outline_system": "Bạn là nhà hoạch định dàn ý tiểu thuyết chuyên nghiệp, giỏi xây dựng khung truyện hấp dẫn.", "outline_user": "Hãy tạo dàn ý đầy đủ cho một tiểu thuyết thể loại {genre}, tiêu đề: «{title}».\n\nThiết lập nhân vật: {character_setting}\n\nThế giới quan: {world_setting}\n\nCốt truyện chính: {plot_idea}\n\nYêu cầu phong cách: {style_desc}\n\nYêu cầu:\n1. Tổng cộng khoảng {total_chapters} chương\n2. Mỗi chương theo định dạng nghiêm ngặt: Chương X: Tiêu đề chương - Mô tả cốt truyện ngắn gọn (50-100 từ)\n3. Cốt truyện mạch lạc, có mở đầu - phát triển - cao trào - kết thúc, nhân vật phát triển hợp lý\n4. Chỉ xuất ra danh sách dàn ý, không có nội dung khác\n5. Dàn ý phải hấp dẫn, lôi cuốn, có yếu tố hồi hộp\n6. Phân bổ chương theo cấu trúc 3 hồi:\n - Hồi 1 (25% số chương): Giới thiệu, xây dựng thế giới, thiết lập xung đột\n - Hồi 2 (50% số chương): Phát triển, leo thang, bước ngoặt giữa truyện\n - Hồi 3 (25% số chương): Cao trào, giải quyết, kết thúc\n7. Mỗi chương phải có xung đột nhỏ hoặc tiến triển rõ ràng, không có chương 'chữ lót'", - "chapter_system": "Bạn là nhà văn tiểu thuyết dài kỳ xuất sắc, sáng tác những câu chuyện chạm đến trái tim. Hãy viết với phong cách tự nhiên của con người. Tránh các mẫu câu AI phổ biến như: bắt đầu đoạn bằng 'Tuy nhiên', 'Ngoài ra', 'Hơn nữa' liên tục; kết thúc chương quá gọn gàng hoặc giáo điều; sử dụng cụm từ 'một cách + tính từ' quá nhiều; liệt kê ba thứ liền nhau theo kiểu 'cảm thấy X, Y, và Z'.", + "chapter_system": "Bạn là nhà văn tiểu thuyết dài kỳ xuất sắc, sáng tác những câu chuyện chạm đến trái tim. Hãy viết với phong cách tự nhiên của con người. Tránh các mẫu câu AI phổ biến như: bắt đầu đoạn bằng 'Tuy nhiên', 'Ngoài ra', 'Hơn nữa' liên tục; kết thúc chương quá gọn gàng hoặc giáo điều; sử dụng cụm từ 'một cách + tính từ' quá nhiều; liệt kê ba thứ liền nhau theo kiểu 'cảm thấy X, Y, và Z'. TUYỆT ĐỐI KHÔNG sử dụng ký tự tiếng Trung hoặc văn phong lạm dụng Hán Việt. Phải dùng 100% tiếng Việt thuần túy, mượt mà tự nhiên.", "chapter_user": "Hãy viết Chương {chapter_num} của tiểu thuyết «{novel_title}».\n\nTiêu đề chương: {chapter_title}\nDàn ý chương này: {chapter_desc}\n\nThiết lập tổng thể:\nNhân vật: {character_setting}\nThế giới quan: {world_setting}\nCốt truyện chính: {plot_idea}\n\nYêu cầu phong cách: {style_desc}\n\nYêu cầu cụ thể:\n1. Nội dung khoảng {target_words} từ\n2. Cốt truyện tuân thủ nghiêm ngặt dàn ý chương, mạch lạc với toàn bộ sách\n3. Đối thoại tự nhiên mang cá tính riêng của từng nhân vật, miêu tả tâm lý tinh tế, miêu tả cảnh vật sinh động\n4. Kết thúc để lại yếu tố hồi hộp hoặc gợi mở cho chương tiếp\n5. Sử dụng kỹ thuật 'Show don't Tell': thể hiện cảm xúc qua hành động và chi tiết, không chỉ mô tả trực tiếp\n6. Cân bằng giữa hành động, đối thoại và miêu tả nội tâm\n7. Chỉ xuất ra nội dung chính, KHÔNG có tiêu đề chương, KHÔNG giải thích, KHÔNG có phần suy nghĩ/phân tích, KHÔNG có meta-talk.\n8. TUYỆT ĐỐI KHÔNG lặp lại bất kỳ đoạn văn hay lời dẫn nào đã xuất hiện ở phần trước.{continuity_prompt}{context_prompt}", "continuity_prompt": "\n\n【Ôn lại trước đó】\n{previous_content}\n\n【Danh sách kiểm tra tính mạch lạc】\n✓ Đảm bảo hướng cốt truyện nhất quán với phần trước\n✓ Trạng thái và vị trí nhân vật tương ứng với phần trước\n✓ Các yếu tố hồi hộp đã có được hưởng ứng hoặc đẩy lên trong chương này\n✓ Phong cách đối thoại nhân vật giữ nhất quán\n✓ TUYỆT ĐỐI KHÔNG lặp lại nội dung đã có. Không bắt đầu bằng việc nhắc lại cảnh cũ.\n✓ Bắt đầu viết thẳng vào diễn biến mới từ điểm kết thúc của phần trước.\n✓ Yếu tố hồi hộp mới mở đường cho các chương sau\n✓ Kiểm tra tiến độ so với dàn ý tổng thể, đảm bảo không đi lệch hướng\n✓ Phát triển các tuyến truyện phụ song song với tuyến chính\n\nHãy tuân thủ nghiêm ngặt danh sách kiểm tra trên để đảm bảo nội dung mạch lạc và KHÔNG TRÙNG LẶP.", "context_prompt": "\n\n{context_summary}\n\nHãy dựa vào tóm tắt trên để nắm bắt cốt truyện chính phần trước, đảm bảo chương này mạch lạc nhưng KHÔNG nhắc lại những gì đã tóm tắt.", @@ -615,7 +615,7 @@ "suggest_char_user": "Hãy đưa ra ý tưởng thiết lập chi tiết về các nhân vật cho một tiểu thuyết.\n\nTiêu đề dự kiến: {title}\nThể loại: {genre}\nSố lượng yêu cầu:\n- Nhân vật chính: {num_main_chars} người\n- Nhân vật phụ/phản diện: {num_sub_chars} người\n\nYêu cầu đối với mỗi nhân vật:\n1. Nêu rõ vai trò (Chính/Phụ/Phản diện)\n2. Tên, ngoại hình và đặc điểm tính cách nổi bật\n3. Trình độ, kỹ năng hoặc sức mạnh đặc biệt\n4. Bối cảnh xuất thân và động cơ cốt lõi\n\nHãy mô tả sâu sắc và có chiều sâu. Chỉ trả về nội dung ý tưởng, không giải thích dài dòng.", "suggest_world_user": "Hãy đưa ra ý tưởng thiết lập thế giới quan (khoảng 150-200 từ) cho một tiểu thuyết.\n\nTiêu đề dự kiến: {title}\nThể loại: {genre}\n\nYêu cầu: Chỉ ra các quy luật độc đáo, sức mạnh, cấu trúc xã hội hoặc bối cảnh lịch sử. Chỉ trả về nội dung ý tưởng.", "suggest_plot_user": "Hãy đưa ra ý tưởng cốt truyện chính (khoảng 200-250 từ) cho tiểu thuyết này để làm nền tảng phát triển.\n\nTiêu đề: {title}\nThể loại: {genre}\n\n(Nếu có) Thiết lập nhân vật: {character_setting}\n(Nếu có) Thế giới quan: {world_setting}\n\nYêu cầu:\n- Cốt truyện cần có điểm nhấn đầu truyện, bước ngoặt giữa truyện và xung đột cốt lõi rõ ràng\n- Xung đột bên ngoài (đối thủ, thế lực, nhiệm vụ) và xung đột nội tâm (mâu thuẫn, lựa chọn khó khăn)\n- Ít nhất 2-3 bước ngoặt bất ngờ nhưng hợp logic\n- Kết thúc để lại dư vị (happy ending hoặc open ending tùy thể loại)\n- Chỉ trả về nội dung ý tưởng.", - "continue_system": "Bạn là nhà văn tiểu thuyết dài kỳ xuất sắc, giỏi sáng tác câu chuyện hấp dẫn và kết nối cốt truyện tự nhiên.", + "continue_system": "Bạn là nhà văn tiểu thuyết dài kỳ xuất sắc, giỏi sáng tác câu chuyện hấp dẫn và kết nối cốt truyện tự nhiên. TUYỆT ĐỐI KHÔNG sử dụng ký tự tiếng Trung hoặc văn phong lạm dụng Hán Việt. Phải dùng 100% tiếng Việt thuần túy, tự nhiên.", "continue_user": "Hãy viết tiếp chương tiếp theo của tiểu thuyết «{novel_title}».\n\n【Thiết lập hiện có】\nThiết lập nhân vật: {character_setting}\nThế giới quan: {world_setting}\nCốt truyện chính: {plot_idea}\n\n【Yêu cầu phong cách】\n{style_desc}\n\n【Ôn lại trước đó】(1500 từ gần nhất)\n{previous_content}\n\n【Yêu cầu viết tiếp】\n1. Viết tiếp chương mới tự nhiên dựa trên nội dung trước\n2. Giữ tính mạch lạc với phần trước, bao gồm tính cách nhân vật, phát triển cốt truyện, phong cách đối thoại v.v.\n3. Số từ khoảng {target_words}\n4. TUYỆT ĐỐI KHÔNG lặp lại nội dung đã có. Không bắt đầu bằng việc tóm tắt hoặc nhắc lại cảnh cuối cùng.\n5. Kết thúc để lại yếu tố hồi hộp hoặc gợi mở phù hợp\n6. Chỉ xuất ra nội dung viết tiếp, KHÔNG có tiêu đề chương, KHÔNG giải thích, KHÔNG có phần suy nghĩ/phân tích.", "chapter_summary_system": "Bạn là biên tập nội dung chuyên nghiệp, giỏi chiết xuất cốt truyện cốt lõi và thông tin quan trọng của chương.", "chapter_summary_user": "Hãy tạo tóm tắt ngắn gọn cho chương sau (100-200 từ).\n\nTiêu đề chương: {chapter_title}\n\nNội dung chương:\n{chapter_content}\n\nYêu cầu:\n1. Giữ lại cốt truyện chính và thông tin nhân vật\n2. Nêu bật xung đột cốt lõi và bước ngoặt của chương\n3. Ngôn ngữ ngắn gọn rõ ràng\n4. Chỉ xuất ra nội dung tóm tắt, không có giải thích khác", @@ -627,7 +627,9 @@ "polished_text_header": "Văn bản đã trau chuốt", "ai_no_format": "AI không xuất theo định dạng, vui lòng xem kết quả trau chuốt", "image_cover_base": "Một bìa sách chuyên nghiệp chất lượng cao cho tiểu thuyết tiêu đề '{title}', thể loại '{genre}'. Ánh sáng điện ảnh, chi tiết, phong cách sử thi.", - "image_illustration_base": "Một minh họa đẹp cho chương truyện tiêu đề '{title}'. Mô tả cảnh: {summary}. Nghệ thuật kỹ thuật số, độ chi tiết cao." + "image_illustration_base": "Một minh họa đẹp cho chương truyện tiêu đề '{title}'. Mô tả cảnh: {summary}. Nghệ thuật kỹ thuật số, độ chi tiết cao.", + "reflection_system": "Bạn là một biên tập viên xuất sắc kiêm chuyên gia thẩm định văn học. Khả năng của bạn là phát hiện các lỗi logic, sự lan man, sai tính cách nhân vật và lỗi ngôn ngữ trong các bản thảo, sau đó trực tiếp viết lại chúng thành một phiên bản hoàn hảo tuyệt đối.", + "reflection_user": "Dưới đây là Dàn Ý yêu cầu và Bản Nháp của chương truyện.\n\n【Dàn ý & Yêu cầu chương】\n{chapter_req}\n\n【Bản nháp hiện tại】\n{draft_content}\n\nHãy ĐỌC KỸ bản nháp trên, đối chiếu với dàn ý để phát hiện những chỗ lan man, sai logic, hoặc văn phong chưa đạt.\nSau đó, HÃY VIẾT LẠI một phiên bản hoàn chỉnh, súc tích, mạch lạc hơn nhưng vẫn phải giữ độ dài tương đương (khoảng {target_words} chữ).\n\nTUYỆT ĐỐI tuân thủ các quy tắc sau:\n1. CHỈ xuất kết quả là nội dung chương truyện đã được tối ưu hóa. KHÔNG thêm bất kỳ nhận xét, phân tích, tiêu đề hoặc từ ngữ dư thừa nào khác.\n2. Bắt buộc sử dụng 100% TIẾNG VIỆT thuần túy. TUYỆT ĐỐI cấm các ký tự tiếng Trung hoặc văn phong rườm rà Hán Việt." }, "generator": { "title_empty": "Tên tiểu thuyết không được để trống", diff --git a/scripts/fill_subgenres.py b/scripts/fill_subgenres.py new file mode 100644 index 0000000..2e7e53a --- /dev/null +++ b/scripts/fill_subgenres.py @@ -0,0 +1,75 @@ +import json +import os + +DESC_MAP = { + "Xuyên không": "Nhân vật chính từ thế giới thực xuyên đến một thế giới khác, thời đại khác.", + "Xuyên sách": "Nhân vật chính xuyên vào cốt truyện của một bộ tiểu thuyết, thường thay đổi số phận của nguyên chủ.", + "Trọng sinh": "Nhân vật chính chết đi và sống lại ở một thời điểm trong quá khứ để làm lại cuộc đời.", + "Hệ thống": "Được gắn kết với một hệ thống (trí tuệ nhân tạo) cung cấp nhiệm vụ, kỹ năng và đạo cụ.", + "Bàn tay vàng": "Sở hữu năng lực, bảo bối hoặc lợi thế cực kỳ to lớn ngay từ đầu.", + "Không gian tùy thân": "Có một dị không gian bí mật để tàng hình, lưu trữ vật phẩm hoặc trồng trọt.", + "Linh tuyền": "Sở hữu suối nước thánh có tác dụng cường thân kiện thể, chữa bách bệnh, thúc đẩy sinh trưởng.", + "Đọc tâm thuật": "Năng lực ngoại cảm có thể nghe được suy nghĩ thực sự của người khác.", + "Vô địch lưu": "Nhân vật chính sở hữu sức mạnh vô địch, áp đảo mọi kẻ thù ngay từ đầu truyện.", + "Cẩu đạo": "Nhân vật chính theo trường phái ẩn nhẫn, phát triển âm thầm, tuyệt đối không phô trương để giấu thực lực.", + "Nhiệt huyết": "Mạch truyện sục sôi, đề cao tinh thần chiến đấu không lùi bước, dũng cảm đối mặt rủi ro.", + "Hài hước": "Văn phong mang đậm tính giải trí, tấu hài, nhiều tình huống dở khóc dở cười.", + "Sảng văn": "Truyện tập trung vào sự thăng tiến nhanh chóng, vả mặt kẻ khinh thường mình, mang lại cảm giác thỏa mãn.", + "Ngọt sủng": "Tình tiết lãng mạn, ngọt ngào, nhân vật chính được yêu thương chiều chuộng hết mực, ít bi kịch.", + "Ngược luyến": "Tình yêu nhiều oán hận, hiểu lầm, dằn vặt tổn thương sâu sắc cả thể xác lẫn tinh thần.", + "Gương vỡ lại lành": "Hai người từng yêu nhau, chia tay vì hiểu lầm hoặc hoàn cảnh, sau đó vượt qua thử thách để quay về bên nhau.", + "Cưới trước yêu sau": "Kết hôn vì bổn phận, giao dịch hoặc ép buộc, sau quá trình sống chung mới nảy sinh tình cảm thật sự.", + "Oan gia ngõ hẹp": "Cặp đôi ban đầu có ấn tượng xấu, ghét bỏ nhau, nhưng qua nhiều đụng độ lại dần yêu nhau.", + "Thanh mai trúc mã": "Nhân vật lớn lên cùng nhau từ nhỏ, có nền tảng tình cảm gắn kết sâu đậm và hiểu rõ về nhau.", + "Hào môn thế gia": "Bối cảnh giới siêu giàu, gia tộc quyền thế, đi kèm với tranh giành tài sản hoặc hôn nhân thương mại.", + "Tổng tài": "Nam chính là giám đốc, chủ tịch bá đạo, quyền thế, lạnh lùng nhưng rất sủng ái nữ chính.", + "Minh tinh": "Nhân vật chính là ngôi sao giải trí, cốt truyện khai thác ánh hào quang và góc khuất của showbiz.", + "Giới giải trí": "Bối cảnh tập trung vào mâu thuẫn, lịch trình, scandal và hoạt động nghệ thuật của giới giải trí.", + "Vườn trường": "Truyện xoay quanh cuộc sống thanh xuân học đường, tình cảm tuổi học trò trong sáng và nhiệt huyết.", + "Học bá": "Nhân vật chính có trí tuệ xuất chúng, tính toán thần sầu, giỏi giang về mặt học vấn.", + "Võng du": "Nhân vật chơi game online (có thể là thực tế ảo), cốt truyện đan xen giữa game và đời thực.", + "E-sports": "Tập trung vào thể thao điện tử chuyên nghiệp, giải đấu và sự cạnh tranh khốc liệt khao khát cúp vô địch.", + "Livestream": "Sử dụng hình thức phát sóng trực tiếp (livestream) để tương tác, kiếm tiền hoặc làm nhiệm vụ.", + "Mỹ thực": "Tập trung miêu tả các món ăn ngon, quá trình nấu nướng và kinh doanh nhà hàng xuất sắc.", + "Nông trại": "Quản lý và phát triển nông trại, thường kết hợp với kinh tế nhàn nhã, chữa lành.", + "Điền văn": "Cốt truyện bình dị, mô tả cuộc sống làm ruộng, làm nông trồng trọt chăn nuôi mang hơi thở dân dã, ấm cúng.", + "Nuôi con": "Tập trung vào hành trình chăm sóc, nuôi dưỡng con cái (con ruột, con nuôi hoặc manh bảo).", + "Làm giàu": "Quá trình nhân vật chính từ hai bàn tay trắng xây dựng sự nghiệp, kinh doanh trở nên giàu sang phú quý.", + "Cung đấu": "Những mưu mô ác hiểm tranh giành sủng ái và quyền lực chốn hậu cung giữa các phi tần.", + "Gia đấu": "Xung đột lợi ích, quyền hành và địa vị nội bộ trong các đại gia tộc danh gia vọng tộc.", + "Quyền mưu": "Sử dụng trí mưu, âm mưu quyền thuật thâm sâu để tranh đoạt vương quyền, vị thế trên triều đình.", + "Nữ cường": "Nữ chính độc lập, mạnh mẽ, thông minh, không quá luỵ nam chính, thường tự giải quyết các rắc rối mưu mô.", + "Nam cường": "Nam chính vô cùng mạnh mẽ, quyền thế, tài giỏi, cường giả vi tôn che chở và bảo vệ người mình yêu.", + "Song khiết": "Cả nam và nữ chính đều là mối tình đầu tiên về cả thể xác lẫn tâm hồn của nhau, 1v1 tuyệt đối.", + "Phế Sài": "Nhân vật chính bị coi là đồ bỏ đi, rác rưởi, không có tài năng bẩm sinh nhưng sau đó quật khởi vả mặt.", + "Thiên tài": "Có năng khiếu phi phàm vượt trội, thiên phú cực cao, tốc độ tu luyện hoặc tiếp thu nhanh hơn bất kỳ ai.", + "Mỹ cường thảm": "Nhân vật có ngoại hình đẹp, thực lực siêu cường cực hạn nhưng mang quá khứ hoặc số phận bi thương.", + "Trà xanh": "Nhân vật nữ bề ngoài tỏ ra yếu đuối, ngây thơ thánh thiện nhưng tâm can đầy mưu mô ly gián hạ bệ người khác.", + "Bạch liên hoa": "Có ý nghĩa tương tự Trà xanh, bề ngoài băng thanh ngọc khiết thiện lương nhưng tâm tính hèn mọn, tính toán thâm sâu.", + "Hắc hóa": "Nhân vật từ phe chính nghĩa thiện lương vì quá đau khổ tuyệt vọng mà chuyển biến sang tàn nhẫn, ác độc, không thủ đoạn.", + "Cứu rỗi": "Một người đang trong tăm tối, đau khổ được người kia bao dung thông qua tình yêu mang về với ánh sáng hy vọng.", + "Chữa lành": "Văn phong ấm áp ngọt ngào, nhấn mạnh vào quá trình các nhân vật xoa dịu vết thương lòng hoặc áp lực cuộc sống cho nhau.", + "Manh bảo": "Trẻ con đáng yêu, thông minh lanh lợi, đóng vai trò trợ tâm cho cha mẹ xích lại gần nhau.", + "Hậu cung": "Nhân vật chính (thường là nam) có mối quan hệ tình cảm đồng thời và kết hôn cùng nhiều nhân vật khác giới.", + "1v1": "Cốt truyện chỉ xoay quanh tình yêu duy nhất trọn đời giữa hai người, thủy chung 1 nam - 1 nữ.", + "NP": "Motif Poly (Multiple Partners), một nhân vật chính có mối quan hệ tình cảm lãng mạn chính thức với nhiều người cùng một lúc và kết thúc có hậu cùng nhau hòa bình.", + "Dị thế": "Xuyên đến một thế giới hoàn toàn khác Trái Đất, với những hệ tư tưởng, ma pháp hay nền văn minh dị thường." +} + +path = r"c:\Users\lupan\Desktop\Workspace\AIStudioWorkspace\tinix-story\services\data\sub_genres.json" +default_desc = "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." + +try: + with open(path, "r", encoding="utf-8") as f: + data = json.load(f) + + for item in data: + name = item["name"] + if not item.get("description") or item["description"].strip() == "": + item["description"] = DESC_MAP.get(name, default_desc) + + with open(path, "w", encoding="utf-8") as f: + json.dump(data, f, indent=4, ensure_ascii=False) + print("Done generating Sub Genre descriptions.") +except Exception as e: + print(f"Error: {e}") diff --git a/services/data/sub_genres.json b/services/data/sub_genres.json index b4eec34..ba79cfd 100644 --- a/services/data/sub_genres.json +++ b/services/data/sub_genres.json @@ -1,402 +1,402 @@ [ { "name": "Hậu cung", - "description": "" + "description": "Nhân vật chính (thường là nam) có mối quan hệ tình cảm đồng thời và kết hôn cùng nhiều nhân vật khác giới." }, { "name": "1v1", - "description": "" + "description": "Cốt truyện chỉ xoay quanh tình yêu duy nhất trọn đời giữa hai người, thủy chung 1 nam - 1 nữ." }, { "name": "NP", - "description": "" + "description": "Motif Poly (Multiple Partners), một nhân vật chính có mối quan hệ tình cảm lãng mạn chính thức với nhiều người cùng một lúc và kết thúc có hậu cùng nhau hòa bình." }, { "name": "Nữ phẫn nam trang", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Nam phẫn nữ trang", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Xuyên không", - "description": "" + "description": "Nhân vật chính từ thế giới thực xuyên đến một thế giới khác, thời đại khác." }, { "name": "Xuyên sách", - "description": "" + "description": "Nhân vật chính xuyên vào cốt truyện của một bộ tiểu thuyết, thường thay đổi số phận của nguyên chủ." }, { "name": "Trọng sinh", - "description": "" + "description": "Nhân vật chính chết đi và sống lại ở một thời điểm trong quá khứ để làm lại cuộc đời." }, { "name": "Hệ thống", - "description": "" + "description": "Được gắn kết với một hệ thống (trí tuệ nhân tạo) cung cấp nhiệm vụ, kỹ năng và đạo cụ." }, { "name": "Bàn tay vàng", - "description": "" + "description": "Sở hữu năng lực, bảo bối hoặc lợi thế cực kỳ to lớn ngay từ đầu." }, { "name": "Không gian tùy thân", - "description": "" + "description": "Có một dị không gian bí mật để tàng hình, lưu trữ vật phẩm hoặc trồng trọt." }, { "name": "Linh tuyền", - "description": "" + "description": "Sở hữu suối nước thánh có tác dụng cường thân kiện thể, chữa bách bệnh, thúc đẩy sinh trưởng." }, { "name": "Đọc tâm thuật", - "description": "" + "description": "Năng lực ngoại cảm có thể nghe được suy nghĩ thực sự của người khác." }, { "name": "Vô địch lưu", - "description": "" + "description": "Nhân vật chính sở hữu sức mạnh vô địch, áp đảo mọi kẻ thù ngay từ đầu truyện." }, { "name": "Cẩu đạo", - "description": "" + "description": "Nhân vật chính theo trường phái ẩn nhẫn, phát triển âm thầm, tuyệt đối không phô trương để giấu thực lực." }, { "name": "Nhiệt huyết", - "description": "" + "description": "Mạch truyện sục sôi, đề cao tinh thần chiến đấu không lùi bước, dũng cảm đối mặt rủi ro." }, { "name": "Hài hước", - "description": "" + "description": "Văn phong mang đậm tính giải trí, tấu hài, nhiều tình huống dở khóc dở cười." }, { "name": "Sảng văn", - "description": "" + "description": "Truyện tập trung vào sự thăng tiến nhanh chóng, vả mặt kẻ khinh thường mình, mang lại cảm giác thỏa mãn." }, { "name": "Ngọt sủng", - "description": "" + "description": "Tình tiết lãng mạn, ngọt ngào, nhân vật chính được yêu thương chiều chuộng hết mực, ít bi kịch." }, { "name": "Ngược luyến", - "description": "" + "description": "Tình yêu nhiều oán hận, hiểu lầm, dằn vặt tổn thương sâu sắc cả thể xác lẫn tinh thần." }, { "name": "Gương vỡ lại lành", - "description": "" + "description": "Hai người từng yêu nhau, chia tay vì hiểu lầm hoặc hoàn cảnh, sau đó vượt qua thử thách để quay về bên nhau." }, { "name": "Cưới trước yêu sau", - "description": "" + "description": "Kết hôn vì bổn phận, giao dịch hoặc ép buộc, sau quá trình sống chung mới nảy sinh tình cảm thật sự." }, { "name": "Oan gia ngõ hẹp", - "description": "" + "description": "Cặp đôi ban đầu có ấn tượng xấu, ghét bỏ nhau, nhưng qua nhiều đụng độ lại dần yêu nhau." }, { "name": "Thanh mai trúc mã", - "description": "" + "description": "Nhân vật lớn lên cùng nhau từ nhỏ, có nền tảng tình cảm gắn kết sâu đậm và hiểu rõ về nhau." }, { "name": "Hào môn thế gia", - "description": "" + "description": "Bối cảnh giới siêu giàu, gia tộc quyền thế, đi kèm với tranh giành tài sản hoặc hôn nhân thương mại." }, { "name": "Tổng tài", - "description": "" + "description": "Nam chính là giám đốc, chủ tịch bá đạo, quyền thế, lạnh lùng nhưng rất sủng ái nữ chính." }, { "name": "Minh tinh", - "description": "" + "description": "Nhân vật chính là ngôi sao giải trí, cốt truyện khai thác ánh hào quang và góc khuất của showbiz." }, { "name": "Giới giải trí", - "description": "" + "description": "Bối cảnh tập trung vào mâu thuẫn, lịch trình, scandal và hoạt động nghệ thuật của giới giải trí." }, { "name": "Vườn trường", - "description": "" + "description": "Truyện xoay quanh cuộc sống thanh xuân học đường, tình cảm tuổi học trò trong sáng và nhiệt huyết." }, { "name": "Học bá", - "description": "" + "description": "Nhân vật chính có trí tuệ xuất chúng, tính toán thần sầu, giỏi giang về mặt học vấn." }, { "name": "Võng du", - "description": "" + "description": "Nhân vật chơi game online (có thể là thực tế ảo), cốt truyện đan xen giữa game và đời thực." }, { "name": "E-sports", - "description": "" + "description": "Tập trung vào thể thao điện tử chuyên nghiệp, giải đấu và sự cạnh tranh khốc liệt khao khát cúp vô địch." }, { "name": "Livestream", - "description": "" + "description": "Sử dụng hình thức phát sóng trực tiếp (livestream) để tương tác, kiếm tiền hoặc làm nhiệm vụ." }, { "name": "Mỹ thực", - "description": "" + "description": "Tập trung miêu tả các món ăn ngon, quá trình nấu nướng và kinh doanh nhà hàng xuất sắc." }, { "name": "Nông trại", - "description": "" + "description": "Quản lý và phát triển nông trại, thường kết hợp với kinh tế nhàn nhã, chữa lành." }, { "name": "Điền văn", - "description": "" + "description": "Cốt truyện bình dị, mô tả cuộc sống làm ruộng, làm nông trồng trọt chăn nuôi mang hơi thở dân dã, ấm cúng." }, { "name": "Nuôi con", - "description": "" + "description": "Tập trung vào hành trình chăm sóc, nuôi dưỡng con cái (con ruột, con nuôi hoặc manh bảo)." }, { "name": "Làm giàu", - "description": "" + "description": "Quá trình nhân vật chính từ hai bàn tay trắng xây dựng sự nghiệp, kinh doanh trở nên giàu sang phú quý." }, { "name": "Cung đấu", - "description": "" + "description": "Những mưu mô ác hiểm tranh giành sủng ái và quyền lực chốn hậu cung giữa các phi tần." }, { "name": "Gia đấu", - "description": "" + "description": "Xung đột lợi ích, quyền hành và địa vị nội bộ trong các đại gia tộc danh gia vọng tộc." }, { "name": "Quyền mưu", - "description": "" + "description": "Sử dụng trí mưu, âm mưu quyền thuật thâm sâu để tranh đoạt vương quyền, vị thế trên triều đình." }, { "name": "Nữ cường", - "description": "" + "description": "Nữ chính độc lập, mạnh mẽ, thông minh, không quá luỵ nam chính, thường tự giải quyết các rắc rối mưu mô." }, { "name": "Nam cường", - "description": "" + "description": "Nam chính vô cùng mạnh mẽ, quyền thế, tài giỏi, cường giả vi tôn che chở và bảo vệ người mình yêu." }, { "name": "Song khiết", - "description": "" + "description": "Cả nam và nữ chính đều là mối tình đầu tiên về cả thể xác lẫn tâm hồn của nhau, 1v1 tuyệt đối." }, { "name": "Phế Sài", - "description": "" + "description": "Nhân vật chính bị coi là đồ bỏ đi, rác rưởi, không có tài năng bẩm sinh nhưng sau đó quật khởi vả mặt." }, { "name": "Thiên tài", - "description": "" + "description": "Có năng khiếu phi phàm vượt trội, thiên phú cực cao, tốc độ tu luyện hoặc tiếp thu nhanh hơn bất kỳ ai." }, { "name": "Từ hôn", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Linh khí khôi phục", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Mạt thế", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Cơ giáp", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Tinh tế", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "ABO", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Người sói", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Ma cà rồng", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Tây huyễn", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Ma pháp", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Kiếm ma", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Pháp sư", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Giả heo ăn hổ", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Bi kịch", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Chữa lành", - "description": "" + "description": "Văn phong ấm áp ngọt ngào, nhấn mạnh vào quá trình các nhân vật xoa dịu vết thương lòng hoặc áp lực cuộc sống cho nhau." }, { "name": "Hắc ám", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Gothic", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Tâm lý", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Tâm thần phân liệt", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Đa nhân cách", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Trinh thám", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Phá án", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Đạo mộ", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Cương thi", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Quy tắc quái đàm", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Vô hạn lưu", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Mau xuyên", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Thực dân", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Chế tạo", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Lĩnh chúa", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Trồng trọt", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Câu cá", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Nuôi thú", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Pokemon", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Anime", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Harry Potter", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Marvel", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Biển sao", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Truyền thuyết đô thị", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Cổ đại", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Dân quốc", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Thập niên 70", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Thập niên 80", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Thập niên 90", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Dị thế", - "description": "" + "description": "Xuyên đến một thế giới hoàn toàn khác Trái Đất, với những hệ tư tưởng, ma pháp hay nền văn minh dị thường." }, { "name": "Đại lục", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Bộ lạc", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Nguyên thủy", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Tu tiên", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Trả thù", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Pháo hôi", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Vai ác", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Tiên tri", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." }, { "name": "Phép thuật", - "description": "" + "description": "AI sẽ sử dụng quy chuẩn và đặc trưng của thể loại con này để tối ưu hóa tình tiết, bối cảnh và văn phong câu chuyện." } ] \ No newline at end of file diff --git a/services/novel_generator.py b/services/novel_generator.py index afb7340..ce64110 100644 --- a/services/novel_generator.py +++ b/services/novel_generator.py @@ -20,16 +20,16 @@ logger = logging.getLogger(__name__) # Mẫu cài sẵn - lựa chọn kiểu phong phú (các phím được ánh xạ tới ngôn ngữ) def _build_preset_templates(): - """Build preset templates from locale""" - keys = [ - "default", "xianxia", "romance", "thriller", "scifi", "wuxia", - "palace", "military", "historical", "supernatural", "campus", - "business", "cyberpunk", "fantasy", "horror", "humor", "literary", "adventure" - ] - return {t(f"templates.name_{k}"): t(f"templates.{k}") for k in keys} + """Build preset templates from StyleManager""" + from services.style_manager import StyleManager + styles = StyleManager.load_styles() + templates = {} + for g in styles: + templates[g["name"]] = g["description"] + return templates def get_preset_templates(): - """Get preset templates (rebuilt each call to respect active language)""" + """Get preset templates (rebuilt each call to respect Active Genres)""" return _build_preset_templates() @@ -375,7 +375,8 @@ class NovelGenerator: sub_genres: List[str] = None, previous_content: str = "", context_summary: str = "", - custom_prompt: str = "" + custom_prompt: str = "", + use_reflection: bool = False ) -> Tuple[str, str]: """ Tạo một chương đơn lẻ @@ -460,6 +461,22 @@ class NovelGenerator: logger.error(f"Chapter generation failed: {content}") return "", content + if use_reflection: + logger.info("Applying self-reflection to the generated chapter draft...") + # Sử dụng content nháp làm nguyên liệu cho lượt tạo reflection mới + reflection_sys = t("prompts.reflection_system") + reflection_prompt = t("prompts.reflection_user", chapter_req=prompt, draft_content=content, target_words=target_words) + reflection_messages = [ + {"role": "system", "content": reflection_sys}, + {"role": "user", "content": reflection_prompt} + ] + success, final_content = self.api_client.generate(reflection_messages, use_cache=False) + if not success: + logger.error(f"Reflection generation failed: {final_content}. Falling back to draft content.") + else: + logger.info("Reflection generation success.") + content = final_content + logger.info(f"Chapter generation success: {chapter_num}") logger.info(f"Chapter content length: {len(content)}") return content, t("generator.gen_success") @@ -477,7 +494,8 @@ class NovelGenerator: sub_genres: List[str] = None, previous_content: str = "", context_summary: str = "", - custom_prompt: str = "" + custom_prompt: str = "", + use_reflection: bool = False ): """ Tạo một chương đơn lẻ bằng streaming @@ -536,13 +554,34 @@ class NovelGenerator: if context_summary: logger.info(f"Using context enhancement, context length: {len(context_summary)}") - for success, chunk in self.api_client.generate_stream(messages=messages): - yield success, chunk + if not use_reflection: + for success, chunk in self.api_client.generate_stream(messages=messages): + yield success, chunk + else: + logger.info("Generating draft for reflection in streaming mode...") + success, draft_content = self.api_client.generate(messages, use_cache=False) + + if not success: + logger.error(f"Draft generation failed: {draft_content}") + yield False, draft_content + return + + logger.info("Draft generated. Applying self-reflection stream...") + reflection_sys = t("prompts.reflection_system") + reflection_prompt = t("prompts.reflection_user", chapter_req=prompt, draft_content=draft_content, target_words=target_words) + reflection_messages = [ + {"role": "system", "content": reflection_sys}, + {"role": "user", "content": reflection_prompt} + ] + + for success, chunk in self.api_client.generate_stream(messages=reflection_messages): + yield success, chunk def rewrite_paragraph( self, text: str, - style_template: str = "" + style_template: str = "", + use_reflection: bool = False ) -> Tuple[str, str]: """ Viết lại đoạn văn (có cơ chế thử lại) @@ -617,6 +656,19 @@ class NovelGenerator: # Xác minh nội dung đã được thông qua logger.info(f"Rewrite done, content length: {len(content)}, attempts: {attempt + 1}") logger.debug(f"Content first 200: {content[:200]}") + + if use_reflection: + logger.info("Applying self-reflection to rewritten paragraph draft...") + reflection_sys = t("prompts.reflection_system") + reflection_prompt = t("prompts.reflection_user", chapter_req=prompt, draft_content=content, target_words=len(content)) + reflection_messages = [ + {"role": "system", "content": reflection_sys}, + {"role": "user", "content": reflection_prompt} + ] + success, final_content = self.api_client.generate(reflection_messages, use_cache=False) + if success: + content = final_content + return content, t("generator.rewrite_success") # Tất cả các lần thử lại đều thất bại @@ -653,7 +705,8 @@ class NovelGenerator: self, text: str, polish_type: str = "general", - custom_requirements: str = "" + custom_requirements: str = "", + use_reflection: bool = False ) -> Tuple[str, str]: """ Văn bản tiếng Ba Lan (với cơ chế thử lại) @@ -746,6 +799,19 @@ class NovelGenerator: # Xác minh nội dung đã được thông qua logger.info(f"Polish done, content length: {len(content)}, attempts: {attempt + 1}") logger.debug(f"Content first 200: {content[:200]}") + + if use_reflection: + logger.info("Applying self-reflection to polished paragraph draft...") + reflection_sys = t("prompts.reflection_system") + reflection_prompt = t("prompts.reflection_user", chapter_req=prompt, draft_content=content, target_words=len(content)) + reflection_messages = [ + {"role": "system", "content": reflection_sys}, + {"role": "user", "content": reflection_prompt} + ] + success, final_content = self.api_client.generate(reflection_messages, use_cache=False) + if success: + content = final_content + return content, t("generator.polish_success") # Tất cả các lần thử lại đều thất bại @@ -755,7 +821,8 @@ class NovelGenerator: def polish_and_suggest( self, text: str, - custom_requirements: str = "" + custom_requirements: str = "", + use_reflection: bool = False ) -> Tuple[str, str, str]: """ Trau chuốt văn bản và đưa ra đề xuất @@ -784,6 +851,18 @@ class NovelGenerator: logger.error(f"Polish failed: {content}") return "", "", content + if use_reflection: + logger.info("Applying self-reflection to polish and suggest paragraph draft...") + reflection_sys = t("prompts.reflection_system") + reflection_prompt = t("prompts.reflection_user", chapter_req=prompt, draft_content=content, target_words=len(content)) + reflection_messages = [ + {"role": "system", "content": reflection_sys}, + {"role": "user", "content": reflection_prompt} + ] + success, final_content = self.api_client.generate(reflection_messages, use_cache=False) + if success: + content = final_content + # Thêm xác minh nội dung if len(content) < 10: logger.warning(f"Polish content too short: {len(content)}, content: {content}") @@ -995,9 +1074,17 @@ class NovelGenerator: def _build_style_description(self) -> str: """Mô tả phong cách xây dựng""" + from services.style_manager import StyleManager gen = self.config.generation + style_name = gen.writing_style + style_desc = StyleManager.get_style_description(style_name) + + full_style = style_name + if style_desc: + full_style += f" ({style_desc})" + return t("prompts.style_description", - writing_style=gen.writing_style, + writing_style=full_style, writing_tone=gen.writing_tone, character_development=gen.character_development, plot_complexity=gen.plot_complexity diff --git a/services/style_manager.py b/services/style_manager.py new file mode 100644 index 0000000..fcf9203 --- /dev/null +++ b/services/style_manager.py @@ -0,0 +1,135 @@ +import os +import json +import logging +from typing import Dict, List, Optional +from locales.i18n import t + +logger = logging.getLogger(__name__) + +STYLES_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "data", "writing_styles.json") + +class StyleManager: + """Quản lý các phong cách viết truyện và mô tả""" + + _cached_styles = None + _cached_mtime = 0 + + @classmethod + def get_default_styles(cls) -> List[Dict[str, str]]: + """Lấy danh sách phong cách viết mặc định nếu chưa có file""" + return [ + { + "name": "Mượt mà tự nhiên, cốt truyện chặt chẽ, nhân vật tinh tế", + "description": "Văn phong trơn tru, dễ đọc, mạch truyện logic xuyên suốt không có sạn. Xây dựng tâm lý và hành động nhân vật sâu sắc, nhất quán." + }, + { + "name": "Văn phong đẹp, ý cảnh sâu xa", + "description": "Sử dụng từ ngữ trau chuốt, giàu hình ảnh và các phép tu từ. Tập trung miêu tả cảnh vật, nội tâm nhân vật để tạo ra một không gian nghệ thuật đầy cảm xúc." + }, + { + "name": "Nhịp nhanh, cốt truyện kịch tính", + "description": "Tập trung vào hành động, xung đột và diễn biến câu chuyện. Cắt giảm tối đa miêu tả thừa thãi, đưa người đọc đi từ bất ngờ này đến bất ngờ khác." + }, + { + "name": "Mô tả tinh tế, cảm xúc phong phú", + "description": "Chú trọng vào việc thể hiện cảm xúc, rung động tinh vi của nhân vật. Các chi tiết nhỏ trong bối cảnh và tương tác được dùng để tô đậm không khí truyện." + }, + { + "name": "Hài hước thú vị, nhẹ nhàng vui vẻ", + "description": "Sử dụng ngôn ngữ hóm hỉnh, tình huống hài hước dở khóc dở cười. Xoay quanh những mẩu chuyện đời thường hoặc hành trình nhẹ nhàng mang tính giải trí cao." + } + ] + + @classmethod + def ensure_data_dir(cls): + """Đảm bảo thư mục data tồn tại""" + os.makedirs(os.path.dirname(STYLES_FILE), exist_ok=True) + + @classmethod + def load_styles(cls) -> List[Dict[str, str]]: + """Tải danh sách phong cách từ file (có cache theo mtime)""" + cls.ensure_data_dir() + if not os.path.exists(STYLES_FILE): + default_styles = cls.get_default_styles() + cls.save_styles(default_styles) + return default_styles + + try: + current_mtime = os.path.getmtime(STYLES_FILE) + if cls._cached_styles is not None and cls._cached_mtime == current_mtime: + return cls._cached_styles + + with open(STYLES_FILE, 'r', encoding='utf-8') as f: + styles = json.load(f) + cls._cached_styles = styles + cls._cached_mtime = current_mtime + return styles + except Exception as e: + logger.error(f"Error loading styles: {e}") + return cls.get_default_styles() + + @classmethod + def save_styles(cls, styles: List[Dict[str, str]]) -> bool: + """Lưu danh sách phong cách xuống file""" + cls.ensure_data_dir() + try: + with open(STYLES_FILE, 'w', encoding='utf-8') as f: + json.dump(styles, f, ensure_ascii=False, indent=4) + # Invalidate cache + cls._cached_styles = styles + cls._cached_mtime = os.path.getmtime(STYLES_FILE) + return True + except Exception as e: + logger.error(f"Error saving styles: {e}") + return False + + @classmethod + def add_style(cls, name: str, description: str = "") -> bool: + """Thêm một phong cách mới""" + styles = cls.load_styles() + # Kiểm tra trùng tên + if any(g["name"] == name for g in styles): + return False + + styles.append({"name": name, "description": description}) + return cls.save_styles(styles) + + @classmethod + def update_style(cls, old_name: str, new_name: str, description: str) -> bool: + """Cập nhật thông tin phong cách""" + styles = cls.load_styles() + for i, g in enumerate(styles): + if g["name"] == old_name: + # Nếu đổi tên, kiểm tra trùng tên mới + if old_name != new_name and any(x["name"] == new_name for x in styles): + return False + + styles[i] = {"name": new_name, "description": description} + return cls.save_styles(styles) + return False + + @classmethod + def delete_style(cls, name: str) -> bool: + """Xóa phong cách""" + styles = cls.load_styles() + initial_length = len(styles) + styles = [g for g in styles if g["name"] != name] + + if len(styles) < initial_length: + return cls.save_styles(styles) + return False + + @classmethod + def get_style_names(cls) -> List[str]: + """Lấy danh sách tên phong cách để hiển thị UI""" + styles = cls.load_styles() + return [g["name"] for g in styles] + + @classmethod + def get_style_description(cls, name: str) -> str: + """Lấy mô tả hướng dẫn của một phong cách""" + styles = cls.load_styles() + for g in styles: + if g["name"] == name: + return g["description"] + return "" diff --git a/ui/continue_tab.py b/ui/continue_tab.py index 977fa72..05d9aa9 100644 --- a/ui/continue_tab.py +++ b/ui/continue_tab.py @@ -3,6 +3,7 @@ from datetime import datetime from locales.i18n import t from services.project_manager import ProjectManager, list_project_titles from services.novel_generator import Chapter +from services.style_manager import StyleManager from core.state import app_state import logging @@ -40,9 +41,20 @@ def build_continue_tab(): memory_type = gr.Radio(label="Cách nhớ ngữ cảnh", choices=["Toàn văn", "Tóm tắt"], value="Toàn văn") with gr.Column(scale=1): memory_chapters = gr.Number(label="Số chương ghi nhớ", value=3, minimum=1, maximum=20, step=1) + with gr.Column(scale=1): + use_reflection_checkbox = gr.Checkbox(label="Bật chế độ Tự kiểm duyệt (Self-Reflection)", value=False, info="AI tự đọc lại và sửa lỗi nháp. Tốn gấp đôi thời gian & Token.") with gr.Row(): continue_target_words = gr.Number(label=t("rewrite.target_words"), value=3000, minimum=100, maximum=50000, step=100) + + style_choices = StyleManager.get_style_names() + continue_style_dropdown = gr.Dropdown( + choices=style_choices, + label="Phong cách viết", + value=style_choices[0] if style_choices else None, + interactive=True + ) + continue_custom_prompt = gr.Textbox(label=t("create.custom_prompt_label"), placeholder=t("create.custom_prompt_placeholder"), scale=2) with gr.Accordion("🚀 3. Sáng tác tiếp", open=False): @@ -141,12 +153,16 @@ def build_continue_tab(): return ch.content or "" return "" - def on_continue_generate(project_title, ch_num, ch_title, ch_desc, target_words, custom_prompt, mem_type, mem_chaps): + def on_continue_generate(project_title, ch_num, ch_title, ch_desc, target_words, custom_prompt, mem_type, mem_chaps, use_reflection, selected_style): yield "⏳ Đang chuẩn bị dữ liệu...", "", gr.update(interactive=False), gr.update(), gr.update() if not app_state.current_project: yield f"❌ {t('continue_tab.no_project_selected')}", "", gr.update(interactive=True), gr.update(), gr.update() return + gen = app_state.get_generator() + if selected_style: + gen.config.generation.writing_style = selected_style + gen = app_state.get_generator() project = app_state.current_project @@ -192,7 +208,8 @@ def build_continue_tab(): world_setting=project.world_setting, plot_idea=project.plot_idea, genre=project.genre, sub_genres=project.sub_genres, - previous_content=prev_content, context_summary=context_summary, custom_prompt=custom_prompt + previous_content=prev_content, context_summary=context_summary, custom_prompt=custom_prompt, + use_reflection=use_reflection ) if content: @@ -228,12 +245,16 @@ def build_continue_tab(): else: yield f"❌ {msg}", "", gr.update(interactive=True), gr.update(), gr.update() - def on_continue_auto_generate(project_title, target_words, custom_prompt, mem_type, mem_chaps, progress=gr.Progress()): + def on_continue_auto_generate(project_title, target_words, custom_prompt, mem_type, mem_chaps, use_reflection, selected_style, progress=gr.Progress()): yield "⏳ Đang chuẩn bị dữ liệu...", "", gr.update(interactive=False), gr.update(interactive=False), gr.update(), gr.update() if not app_state.current_project: yield f"❌ {t('continue_tab.no_project_selected')}", "", gr.update(interactive=True), gr.update(interactive=True), gr.update(), gr.update() return + gen = app_state.get_generator() + if selected_style: + gen.config.generation.writing_style = selected_style + gen = app_state.get_generator() project = app_state.current_project app_state.is_generating = True @@ -292,7 +313,8 @@ def build_continue_tab(): world_setting=project.world_setting, plot_idea=project.plot_idea, genre=project.genre, sub_genres=project.sub_genres, - previous_content=prev_content, context_summary=context_summary, custom_prompt=custom_prompt + previous_content=prev_content, context_summary=context_summary, custom_prompt=custom_prompt, + use_reflection=use_reflection ) if content: @@ -347,12 +369,12 @@ def build_continue_tab(): continue_generate_btn.click( fn=on_continue_generate, inputs=[continue_project_selector, continue_chapter_num, continue_chapter_title, - continue_chapter_desc, continue_target_words, continue_custom_prompt, memory_type, memory_chapters], + continue_chapter_desc, continue_target_words, continue_custom_prompt, memory_type, memory_chapters, use_reflection_checkbox, continue_style_dropdown], outputs=[continue_status, continue_content_display, continue_generate_btn, continue_outline_display, continue_chapter_selector] ) continue_auto_btn.click( fn=on_continue_auto_generate, - inputs=[continue_project_selector, continue_target_words, continue_custom_prompt, memory_type, memory_chapters], + inputs=[continue_project_selector, continue_target_words, continue_custom_prompt, memory_type, memory_chapters, use_reflection_checkbox, continue_style_dropdown], outputs=[continue_status, continue_content_display, continue_auto_btn, continue_generate_btn, continue_outline_display, continue_chapter_selector], show_progress="full" ) diff --git a/ui/create_tab.py b/ui/create_tab.py index 422ad6d..6bce4bb 100644 --- a/ui/create_tab.py +++ b/ui/create_tab.py @@ -9,6 +9,7 @@ from services.novel_generator import OutlineParser from services.project_manager import ProjectManager from services.genre_manager import GenreManager from services.sub_genre_manager import SubGenreManager +from services.style_manager import StyleManager from core.state import app_state import logging @@ -36,6 +37,14 @@ def build_create_tab(): multiselect=True, interactive=True ) + + style_choices = StyleManager.get_style_names() + create_style_dropdown = gr.Dropdown( + choices=style_choices, + label="Phong cách viết", + value=style_choices[0] if style_choices else None, + interactive=True + ) with gr.Column(scale=2): title_input = gr.Textbox( @@ -115,6 +124,8 @@ def build_create_tab(): memory_type = gr.Radio(label="Cách nhớ ngữ cảnh", choices=["Toàn văn", "Tóm tắt"], value="Toàn văn") with gr.Column(scale=1): memory_chapters = gr.Number(label="Số chương ghi nhớ", value=3, minimum=1, maximum=20, step=1) + with gr.Column(scale=1): + use_reflection_checkbox = gr.Checkbox(label="Bật chế độ Tự kiểm duyệt (Self-Reflection)", value=False, info="AI tự đọc lại và sửa lỗi nháp. Tốn gấp đôi thời gian & Token.") with gr.Row(): auto_generate_btn = gr.Button(t("create.start_gen_btn"), variant="primary", size="lg", interactive=False) stop_btn = gr.Button(t("create.pause_gen_btn"), variant="stop", size="lg", interactive=False) @@ -200,9 +211,13 @@ def build_create_tab(): ) return content, msg - def on_auto_generate(title, genre, sub_genres, char_setting, world_setting, plot_idea, outline_text, mem_type, mem_chaps, progress=gr.Progress()): + def on_auto_generate(title, genre, sub_genres, char_setting, world_setting, plot_idea, outline_text, mem_type, mem_chaps, use_reflection, selected_style, progress=gr.Progress()): """Tự động tạo toàn bộ tiểu thuyết""" gen = app_state.get_generator() + + # Cập nhật style vào config hiện tại + if selected_style: + gen.config.generation.writing_style = selected_style chapters, parse_msg = OutlineParser.parse(outline_text) if not chapters: @@ -273,7 +288,8 @@ def build_create_tab(): chapter_desc=chapter.desc, novel_title=title, character_setting=char_setting, world_setting=world_setting, plot_idea=plot_idea, genre=genre, sub_genres=sub_genres, - previous_content=prev_content, context_summary=context_summary + previous_content=prev_content, context_summary=context_summary, + use_reflection=use_reflection ) if content: @@ -340,7 +356,7 @@ def build_create_tab(): ) auto_generate_btn.click( fn=on_auto_generate, - inputs=[title_input, genre_dropdown, sub_genre_dropdown, character_input, world_input, plot_input, outline_output, memory_type, memory_chapters], + inputs=[title_input, genre_dropdown, sub_genre_dropdown, character_input, world_input, plot_input, outline_output, memory_type, memory_chapters, use_reflection_checkbox, create_style_dropdown], outputs=[generation_progress, chapter_selector] ) chapter_selector.change( diff --git a/ui/polish_tab.py b/ui/polish_tab.py index b60a54e..50a81f4 100644 --- a/ui/polish_tab.py +++ b/ui/polish_tab.py @@ -25,6 +25,8 @@ def build_polish_tab(): with gr.Row(): polish_btn = gr.Button(t("polish.start_polish"), variant="primary") polish_suggest_btn = gr.Button(t("polish.polish_suggest_btn"), variant="secondary") + + use_reflection_checkbox = gr.Checkbox(label="Bật chế độ Tự kiểm duyệt (Self-Reflection)", value=False, info="AI báo lỗi và viết lại cho hoàn chỉnh hơn.") polish_status = gr.Textbox(label=t("polish.polish_status"), interactive=False) polish_output = gr.Textbox(label=t("polish.polished_text"), lines=15, interactive=True) @@ -38,24 +40,24 @@ def build_polish_tab(): except Exception as e: return f"❌ {str(e)}" - def on_polish(text, custom_req): + def on_polish(text, custom_req, use_reflection): yield "⏳ Đang gọi AI xử lý... Vui lòng chờ.", gr.update(), gr.update(interactive=False) gen = app_state.get_generator() - content, msg = gen.polish_text(text, custom_requirements=custom_req) + content, msg = gen.polish_text(text, custom_requirements=custom_req, use_reflection=use_reflection) if content: yield f"✅ {msg}", content, gr.update(interactive=True) else: yield f"❌ {msg}", gr.update(), gr.update(interactive=True) - def on_polish_suggest(text, custom_req): + def on_polish_suggest(text, custom_req, use_reflection): yield "⏳ Đang gọi AI xử lý... Vui lòng chờ.", gr.update(), gr.update(interactive=False) gen = app_state.get_generator() - content, msg = gen.polish_and_suggest(text, custom_requirements=custom_req) + content, msg = gen.polish_and_suggest(text, custom_requirements=custom_req, use_reflection=use_reflection) if content: yield f"✅ {msg}", content, gr.update(interactive=True) else: yield f"❌ {msg}", gr.update(), gr.update(interactive=True) polish_file_input.change(fn=on_polish_file_upload, inputs=[polish_file_input], outputs=[polish_input]) - polish_btn.click(fn=on_polish, inputs=[polish_input, polish_custom_req], outputs=[polish_status, polish_output, polish_btn]) - polish_suggest_btn.click(fn=on_polish_suggest, inputs=[polish_input, polish_custom_req], outputs=[polish_status, polish_output, polish_suggest_btn]) + polish_btn.click(fn=on_polish, inputs=[polish_input, polish_custom_req, use_reflection_checkbox], outputs=[polish_status, polish_output, polish_btn]) + polish_suggest_btn.click(fn=on_polish_suggest, inputs=[polish_input, polish_custom_req, use_reflection_checkbox], outputs=[polish_status, polish_output, polish_suggest_btn]) diff --git a/ui/projects_tab.py b/ui/projects_tab.py index e20a666..acefcfe 100644 --- a/ui/projects_tab.py +++ b/ui/projects_tab.py @@ -13,9 +13,7 @@ def build_projects_tab(): headers=["ID", t("ui.col_project_name"), t("ui.col_type"), t("ui.col_created_at"), t("ui.col_chapters")], interactive=False ) - with gr.Row(): - refresh_projects_btn = gr.Button(t("projects.refresh_btn")) - delete_project_btn = gr.Button(t("projects.delete_btn"), variant="stop") + refresh_projects_btn = gr.Button(t("projects.refresh_btn")) gr.Markdown(f"#### {t('projects.delete_header')}") delete_project_selector = gr.Dropdown( @@ -23,6 +21,7 @@ def build_projects_tab(): label=t("projects.delete_select_project"), interactive=True ) + delete_project_btn = gr.Button(t("projects.delete_btn"), variant="stop") project_manage_status = gr.Textbox(label=t("projects.status_label"), interactive=False) def on_refresh_projects(): diff --git a/ui/rewrite_tab.py b/ui/rewrite_tab.py index 8d09283..77fa2e3 100644 --- a/ui/rewrite_tab.py +++ b/ui/rewrite_tab.py @@ -1,6 +1,8 @@ import gradio as gr from locales.i18n import t from services.novel_generator import get_preset_templates +from services.genre_manager import GenreManager +from services.style_manager import StyleManager from utils.file_parser import parse_novel_file from core.state import app_state import logging @@ -12,19 +14,33 @@ def build_rewrite_tab(): gr.Markdown(f"### {t('rewrite.header')}") rewrite_file_input = gr.File(label=t("rewrite.upload_file"), file_types=[".txt", ".docx", ".md", ".pdf"]) + + genre_choices = GenreManager.get_genre_names() + with gr.Row(): + rewrite_genre = gr.Dropdown( + choices=genre_choices, + label=t("create.genre_label"), + value=genre_choices[0] if genre_choices else None, + interactive=True, + scale=1 + ) + + style_choices = StyleManager.get_style_names() + rewrite_style = gr.Dropdown( + choices=style_choices, + label=t("rewrite.preset_style"), + value=style_choices[0] if style_choices else None, + interactive=True, + scale=1 + ) + + use_reflection_checkbox = gr.Checkbox(label="Bật chế độ Tự kiểm duyệt", value=False, info="AI báo lỗi và viết lại cho hoàn chỉnh hơn.", scale=1) + rewrite_input = gr.Textbox( label=t("polish.original_text"), lines=10, placeholder="Dán nội dung cần viết lại..." ) - preset_choices = list(get_preset_templates().keys()) - rewrite_style = gr.Dropdown( - choices=preset_choices, - label=t("rewrite.preset_style"), - value=preset_choices[0] if preset_choices else None, - interactive=True - ) - rewrite_btn = gr.Button(t("rewrite.start_rewrite"), variant="primary") rewrite_status = gr.Textbox(label=t("rewrite.parse_status"), interactive=False) rewrite_output = gr.Textbox(label=t("rewrite.full_rewritten"), lines=15, interactive=True) @@ -38,15 +54,15 @@ def build_rewrite_tab(): except Exception as e: return f"❌ {str(e)}" - def on_rewrite(text, style): + def on_rewrite(text, genre, style, use_reflection): yield "⏳ Đang gọi AI xử lý... Vui lòng chờ.", gr.update(), gr.update(interactive=False) - instructions = get_preset_templates().get(style, "") + instructions = f"Thể loại: {genre}\nPhong cách thiết lập: {style}" gen = app_state.get_generator() - content, msg = gen.rewrite_paragraph(text, instructions) + content, msg = gen.rewrite_paragraph(text, instructions, use_reflection=use_reflection) if content: yield f"✅ {msg}", content, gr.update(interactive=True) else: yield f"❌ {msg}", gr.update(), gr.update(interactive=True) rewrite_file_input.change(fn=on_file_upload, inputs=[rewrite_file_input], outputs=[rewrite_input]) - rewrite_btn.click(fn=on_rewrite, inputs=[rewrite_input, rewrite_style], outputs=[rewrite_status, rewrite_output, rewrite_btn]) + rewrite_btn.click(fn=on_rewrite, inputs=[rewrite_input, rewrite_genre, rewrite_style, use_reflection_checkbox], outputs=[rewrite_status, rewrite_output, rewrite_btn]) diff --git a/ui/settings_tab.py b/ui/settings_tab.py index 77c92e9..04559e7 100644 --- a/ui/settings_tab.py +++ b/ui/settings_tab.py @@ -6,6 +6,7 @@ from services.api_client import get_api_client, reinit_api_client from services.novel_generator import get_cache_size, list_generation_caches, clear_generation_cache from services.genre_manager import GenreManager from services.sub_genre_manager import SubGenreManager +from services.style_manager import StyleManager from core.state import app_state def build_settings_tab(): @@ -15,15 +16,13 @@ def build_settings_tab(): with gr.Tabs(): # Sub-tab: Quản lý giao diện API with gr.Tab(t("settings.tab_backends")): - gr.Markdown(f"#### {t('settings.backends_header')}") - - backends_display = gr.Markdown("...") + gr.Markdown(f"### {t('settings.backends_header')}") def get_backends_display(): try: result = ConfigAPIManager.list_backends() if result["success"] and result["data"]: - lines = [f"### 📋 {len(result['data'])} backend(s)\n"] + lines = [f"#### 📋 {len(result['data'])} backend(s)\n"] for b in result["data"]: enabled = "✅" if b.get("enabled") else "❌" default = " ⭐" if b.get("is_default") else "" @@ -37,52 +36,69 @@ def build_settings_tab(): except Exception as e: return f"❌ {str(e)}" - gr.Markdown("---") - gr.Markdown(f"#### {t('settings.add_backend_header')}") - - provider_names = [API_PROVIDERS[k]["name"] for k in API_PROVIDERS] - with gr.Row(): - api_provider_dropdown = gr.Dropdown( - choices=provider_names, - label=t("settings.provider_label"), - info=t("settings.provider_info"), - interactive=True - ) + # Cột trái: Quản lý danh sách + with gr.Column(scale=1): + with gr.Group(): + backends_display = gr.Markdown("...") + api_refresh_btn = gr.Button(t("settings.refresh_list"), size="sm") + + with gr.Group(): + gr.Markdown(f"#### {t('settings.test_manage_header')}") + with gr.Row(): + test_name_input = gr.Textbox(label=t("settings.test_backend_name"), placeholder=t("settings.test_backend_placeholder"), scale=2) + api_test_btn = gr.Button(t("settings.test_btn"), variant="secondary", scale=1) + test_result = gr.Textbox(label=t("settings.test_result"), interactive=False) - with gr.Row(): - api_name_input = gr.Textbox(label=t("settings.backend_name"), placeholder=t("settings.backend_name_placeholder")) - api_type_dropdown = gr.Dropdown( - choices=ConfigAPIManager.get_backend_types(), - value="openai", label=t("settings.backend_type"), interactive=True - ) + gr.Markdown("---") + with gr.Row(): + delete_name_input = gr.Textbox(label=t("settings.delete_backend_name"), placeholder=t("settings.delete_backend_placeholder"), scale=2) + api_delete_btn = gr.Button(t("settings.delete_btn"), variant="stop", scale=1) - with gr.Row(): - api_url_input = gr.Textbox(label=t("settings.base_url"), placeholder=t("settings.base_url_placeholder")) - api_key_input = gr.Textbox(label=t("settings.api_key"), placeholder=t("settings.api_key_placeholder"), type="password") + # Cột phải: Form thay đổi + with gr.Column(scale=2): + with gr.Group(): + gr.Markdown(f"#### Thay đổi cấu hình ({t('settings.add_backend_header')})") + + provider_names = [API_PROVIDERS[k]["name"] for k in API_PROVIDERS] + + with gr.Row(): + manage_backend_select = gr.Dropdown( + choices=[b['name'] for b in ConfigAPIManager.list_backends().get("data", [])], + label="Chọn cấu hình để chỉnh sửa (bỏ trống để thêm mới)", + interactive=True, + scale=4 + ) + manage_backend_btn = gr.Button("Chọn", variant="secondary", scale=1) - with gr.Row(): - api_model_input = gr.Textbox(label=t("settings.model_name"), placeholder=t("settings.model_name_placeholder")) - api_timeout_input = gr.Slider(minimum=5, maximum=600, value=120, step=5, label=t("settings.timeout")) + with gr.Row(): + api_provider_dropdown = gr.Dropdown( + choices=provider_names, + label=t("settings.provider_label"), + info=t("settings.provider_info"), + interactive=True + ) - with gr.Row(): - api_save_btn = gr.Button(t("settings.add_btn"), variant="primary") - api_refresh_btn = gr.Button(t("settings.refresh_list"), size="sm") + with gr.Row(): + api_name_input = gr.Textbox(label=t("settings.backend_name"), placeholder=t("settings.backend_name_placeholder")) + api_type_dropdown = gr.Dropdown( + choices=ConfigAPIManager.get_backend_types(), + value="openai", label=t("settings.backend_type"), interactive=True + ) - api_status = gr.Textbox(label=t("settings.operation_result"), interactive=False) + with gr.Row(): + api_url_input = gr.Textbox(label=t("settings.base_url"), placeholder=t("settings.base_url_placeholder")) + api_key_input = gr.Textbox(label=t("settings.api_key"), placeholder=t("settings.api_key_placeholder"), type="text") - gr.Markdown("---") - gr.Markdown(f"#### {t('settings.test_manage_header')}") + with gr.Row(): + api_model_input = gr.Textbox(label=t("settings.model_name"), placeholder=t("settings.model_name_placeholder")) + api_timeout_input = gr.Slider(minimum=5, maximum=600, value=120, step=5, label=t("settings.timeout")) - with gr.Row(): - test_name_input = gr.Textbox(label=t("settings.test_backend_name"), placeholder=t("settings.test_backend_placeholder")) - api_test_btn = gr.Button(t("settings.test_btn"), variant="secondary") + with gr.Row(): + api_save_btn = gr.Button(t("settings.add_btn"), variant="primary") + api_update_btn = gr.Button("Cập nhật thay đổi", variant="secondary") - with gr.Row(): - delete_name_input = gr.Textbox(label=t("settings.delete_backend_name"), placeholder=t("settings.delete_backend_placeholder")) - api_delete_btn = gr.Button(t("settings.delete_btn"), variant="stop") - - test_result = gr.Textbox(label=t("settings.test_result"), interactive=False) + api_status = gr.Textbox(label=t("settings.operation_result"), interactive=False) def on_provider_select(provider_name): for key, info in API_PROVIDERS.items(): @@ -96,52 +112,136 @@ def build_settings_tab(): yield result["message"] def on_api_save(name, btype, url, key, model, timeout): + if not name.strip(): + return "❌ Vui lòng nhập tên giao diện", get_backends_display(), gr.update() + result = ConfigAPIManager.add_backend(name, btype, url, key, model, int(timeout)) reinit_api_client() app_state.generator = None - return result["message"], get_backends_display() + new_choices = [b['name'] for b in ConfigAPIManager.list_backends().get("data", [])] + return result["message"], get_backends_display(), gr.update(choices=new_choices) + + def on_api_update(old_name, new_name, btype, url, key, model, timeout): + if not old_name: + return "❌ Vui lòng chọn một cấu hình để chỉnh sửa trước", get_backends_display(), gr.update() + if not new_name.strip(): + return "❌ Vui lòng nhập tên giao diện", get_backends_display(), gr.update() + + # Handle updating the existing backend with new details + # If name was changed, it requires updating that as well but the update_backend method modifies existing object's properties in place based on its previous name + result = ConfigAPIManager.update_backend( + old_name, + name=new_name.strip(), + type=btype, + base_url=url, + api_key=key, + model=model, + timeout=int(timeout) + ) + + reinit_api_client() + app_state.generator = None + new_choices = [b['name'] for b in ConfigAPIManager.list_backends().get("data", [])] + # if name changed, update the dropdown selected value to the new name, otherwise clear it + new_val = new_name.strip() if result["success"] else old_name + + return result["message"], get_backends_display(), gr.update(choices=new_choices, value=new_val) + + def on_backend_select(selected_name): + print(f"DEBUG: on_backend_select triggered with: {selected_name}") + if not selected_name: + return gr.update(value=""), gr.update(value="openai"), gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(value=120) + + backends = ConfigAPIManager.list_backends().get("data", []) + for b in backends: + if b["name"] == selected_name: + return ( + gr.update(value=b.get("name", "")), + gr.update(value=b.get("type", "openai")), + gr.update(value=b.get("base_url", "")), + gr.update(value=b.get("api_key", "")), + gr.update(value=b.get("model", "")), + gr.update(value=b.get("timeout", 120)) + ) + return gr.update(value=""), gr.update(value="openai"), gr.update(value=""), gr.update(value=""), gr.update(value=""), gr.update(value=120) def on_api_delete(name): result = ConfigAPIManager.delete_backend(name) reinit_api_client() app_state.generator = None - return result["message"], get_backends_display() + new_choices = [b['name'] for b in ConfigAPIManager.list_backends().get("data", [])] + return result["message"], get_backends_display(), gr.update(choices=new_choices) api_provider_dropdown.change( fn=on_provider_select, inputs=[api_provider_dropdown], outputs=[api_url_input, api_model_input, api_name_input] ) + + manage_backend_btn.click( + fn=on_backend_select, + inputs=[manage_backend_select], + outputs=[api_name_input, api_type_dropdown, api_url_input, api_key_input, api_model_input, api_timeout_input] + ) + api_save_btn.click( fn=on_api_save, inputs=[api_name_input, api_type_dropdown, api_url_input, api_key_input, api_model_input, api_timeout_input], - outputs=[api_status, backends_display] + outputs=[api_status, backends_display, manage_backend_select] ) + + api_update_btn.click( + fn=on_api_update, + inputs=[manage_backend_select, api_name_input, api_type_dropdown, api_url_input, api_key_input, api_model_input, api_timeout_input], + outputs=[api_status, backends_display, manage_backend_select] + ) + api_test_btn.click(fn=on_api_test, inputs=[test_name_input], outputs=[test_result]) - api_delete_btn.click(fn=on_api_delete, inputs=[delete_name_input], outputs=[api_status, backends_display]) - api_refresh_btn.click(fn=lambda: get_backends_display(), outputs=[backends_display]) + api_delete_btn.click(fn=on_api_delete, inputs=[delete_name_input], outputs=[api_status, backends_display, manage_backend_select]) + + def force_refresh_backends(): + choices = [b['name'] for b in ConfigAPIManager.list_backends().get("data", [])] + return get_backends_display(), gr.update(choices=choices) + + api_refresh_btn.click(fn=force_refresh_backends, outputs=[backends_display, manage_backend_select]) # Sub-tab: Tham số sinh with gr.Tab(t("settings.tab_params")): - gr.Markdown(f"#### {t('settings.params_header')}") + with gr.Group(): + gr.Markdown(f"#### {t('settings.params_header')}") - config = get_config() - gen_config = config.generation + config = get_config() + gen_config = config.generation - param_temperature = gr.Slider(minimum=0.1, maximum=2.0, value=gen_config.temperature, step=0.1, label=t("settings.temperature_label"), info=t("settings.temperature_info")) - param_top_p = gr.Slider(minimum=0.1, maximum=1.0, value=gen_config.top_p, step=0.05, label="Top P", info=t("settings.top_p_info")) - param_max_tokens = gr.Slider(minimum=100, maximum=100000, value=gen_config.max_tokens, step=100, label="Max Tokens", info=t("settings.max_tokens_info")) - param_chapter_words = gr.Slider(minimum=500, maximum=65536, value=gen_config.chapter_target_words, step=500, label=t("settings.chapter_target_words")) + with gr.Row(): + param_temperature = gr.Slider(minimum=0.1, maximum=2.0, value=gen_config.temperature, step=0.1, label=t("settings.temperature_label"), info=t("settings.temperature_info")) + param_top_p = gr.Slider(minimum=0.1, maximum=1.0, value=gen_config.top_p, step=0.05, label="Top P", info=t("settings.top_p_info")) - save_params_btn = gr.Button(t("settings.save_params_btn"), variant="primary") - params_status = gr.Textbox(label=t("settings.save_status"), interactive=False) + with gr.Row(): + param_max_tokens = gr.Slider(minimum=100, maximum=100000, value=gen_config.max_tokens, step=100, label="Max Tokens", info=t("settings.max_tokens_info")) + param_chapter_words = gr.Slider(minimum=500, maximum=65536, value=gen_config.chapter_target_words, step=500, label=t("settings.chapter_target_words")) - def on_save_params(temp, top_p, max_tokens, chapter_words): + with gr.Row(): + param_writing_style = gr.Dropdown(choices=StyleManager.get_style_names(), value=gen_config.writing_style, label=t("settings.writing_style"), allow_custom_value=True) + param_writing_tone = gr.Dropdown(choices=t("settings.tones"), value=gen_config.writing_tone, label=t("settings.tone_label"), allow_custom_value=True) + + with gr.Row(): + param_char_dev = gr.Dropdown(choices=t("settings.char_dev_options"), value=gen_config.character_development, label=t("settings.char_dev_label"), allow_custom_value=True) + param_plot_complexity = gr.Dropdown(choices=t("settings.plot_complexity_options"), value=gen_config.plot_complexity, label=t("settings.plot_complexity_label"), allow_custom_value=True) + + save_params_btn = gr.Button(t("settings.save_params_btn"), variant="primary") + params_status = gr.Textbox(label=t("settings.save_status"), interactive=False) + + def on_save_params(temp, top_p, max_tokens, chapter_words, style, tone, chardev, plotcomp): cfg = get_config() success, msg = cfg.update_generation_config( temperature=temp, top_p=top_p, max_tokens=int(max_tokens), - chapter_target_words=int(chapter_words) + chapter_target_words=int(chapter_words), + writing_style=style, + writing_tone=tone, + character_development=chardev, + plot_complexity=plotcomp ) if success: app_state.generator = None @@ -150,32 +250,33 @@ def build_settings_tab(): save_params_btn.click( fn=on_save_params, - inputs=[param_temperature, param_top_p, param_max_tokens, param_chapter_words], + inputs=[param_temperature, param_top_p, param_max_tokens, param_chapter_words, param_writing_style, param_writing_tone, param_char_dev, param_plot_complexity], outputs=[params_status] ) # Sub-tab: Bộ nhớ đệm with gr.Tab(t("settings.tab_cache")): - gr.Markdown(f"#### {t('settings.cache_header')}") + with gr.Group(): + gr.Markdown(f"#### {t('settings.cache_header')}") - cache_info_display = gr.Markdown(t("ui.no_cache")) + cache_info_display = gr.Markdown(t("ui.no_cache")) - def get_cache_info(): - try: - api_client = get_api_client() - stats = api_client.get_cache_stats() - gen_caches = list_generation_caches() - gen_size_val = get_cache_size() + def get_cache_info(): + try: + api_client = get_api_client() + stats = api_client.get_cache_stats() + gen_caches = list_generation_caches() + gen_size_val = get_cache_size() - return f"### Thống kê bộ nhớ đệm\n- **API Cache**: {stats['total_entries']}/{stats['max_size']} ({stats['usage_rate']:.1f}%)\n- **Generation Cache**: {len(gen_caches)} files ({gen_size_val / 1024:.1f} KB)" - except Exception as e: - return f"❌ {str(e)}" + return f"### Thống kê bộ nhớ đệm\n- **API Cache**: {stats['total_entries']}/{stats['max_size']} ({stats['usage_rate']:.1f}%)\n- **Generation Cache**: {len(gen_caches)} files ({gen_size_val / 1024:.1f} KB)" + except Exception as e: + return f"❌ {str(e)}" - with gr.Row(): - refresh_cache_btn = gr.Button(t("settings.refresh_cache"), size="sm") - clear_all_cache_btn = gr.Button(t("settings.clear_all"), variant="stop") + with gr.Row(): + refresh_cache_btn = gr.Button(t("settings.refresh_cache"), size="sm") + clear_all_cache_btn = gr.Button(t("settings.clear_all"), variant="stop") - cache_op_status = gr.Textbox(label=t("settings.cache_op_status"), interactive=False) + cache_op_status = gr.Textbox(label=t("settings.cache_op_status"), interactive=False) def on_clear_all_cache(): try: @@ -191,22 +292,26 @@ def build_settings_tab(): # Sub-tab: Quản lý thể loại with gr.Tab(t("settings.tab_genre")): - gr.Markdown(f"#### {t('settings.genre_desc')}") - - genre_select = gr.Dropdown( - choices=GenreManager.get_genre_names(), - label=t("settings.genre_select"), - interactive=True - ) - genre_name_input = gr.Textbox(label=t("settings.genre_name"), placeholder=t("settings.genre_name_placeholder")) - genre_desc_input = gr.Textbox(label=t("settings.genre_description"), placeholder=t("settings.genre_description_placeholder"), lines=3) - with gr.Row(): - genre_add_btn = gr.Button(t("settings.genre_add_btn"), variant="primary") - genre_update_btn = gr.Button(t("settings.genre_update_btn"), variant="secondary") - genre_delete_btn = gr.Button(t("settings.genre_delete_btn"), variant="stop") + with gr.Column(scale=1): + gr.Markdown(f"#### {t('settings.genre_desc')}") + genre_select = gr.Dropdown( + choices=GenreManager.get_genre_names(), + label=t("settings.genre_select"), + interactive=True + ) - genre_op_status = gr.Textbox(label=t("settings.genre_op_status"), interactive=False) + with gr.Column(scale=2): + with gr.Group(): + genre_name_input = gr.Textbox(label=t("settings.genre_name"), placeholder=t("settings.genre_name_placeholder")) + genre_desc_input = gr.Textbox(label=t("settings.genre_description"), placeholder=t("settings.genre_description_placeholder"), lines=3) + + with gr.Row(): + genre_add_btn = gr.Button(t("settings.genre_add_btn"), variant="primary") + genre_update_btn = gr.Button(t("settings.genre_update_btn"), variant="secondary") + genre_delete_btn = gr.Button(t("settings.genre_delete_btn"), variant="stop") + + genre_op_status = gr.Textbox(label=t("settings.genre_op_status"), interactive=False) def on_genre_select(name): if name: @@ -245,22 +350,26 @@ def build_settings_tab(): # Sub-tab: Quản lý chủ đề con with gr.Tab(t("settings.tab_sub_genre")): - gr.Markdown(f"#### {t('settings.sub_genre_desc')}") - - sub_genre_select = gr.Dropdown( - choices=SubGenreManager.get_sub_genre_names(), - label=t("settings.sub_genre_select"), - interactive=True - ) - sub_genre_name_input = gr.Textbox(label=t("settings.sub_genre_name"), placeholder=t("settings.sub_genre_name_placeholder")) - sub_genre_desc_input = gr.Textbox(label=t("settings.sub_genre_description"), placeholder=t("settings.sub_genre_description_placeholder"), lines=3) - with gr.Row(): - sub_genre_add_btn = gr.Button(t("settings.sub_genre_add_btn"), variant="primary") - sub_genre_update_btn = gr.Button(t("settings.sub_genre_update_btn"), variant="secondary") - sub_genre_delete_btn = gr.Button(t("settings.sub_genre_delete_btn"), variant="stop") + with gr.Column(scale=1): + gr.Markdown(f"#### {t('settings.sub_genre_desc')}") + sub_genre_select = gr.Dropdown( + choices=SubGenreManager.get_sub_genre_names(), + label=t("settings.sub_genre_select"), + interactive=True + ) - sub_genre_op_status = gr.Textbox(label=t("settings.sub_genre_op_status"), interactive=False) + with gr.Column(scale=2): + with gr.Group(): + sub_genre_name_input = gr.Textbox(label=t("settings.sub_genre_name"), placeholder=t("settings.sub_genre_name_placeholder")) + sub_genre_desc_input = gr.Textbox(label=t("settings.sub_genre_description"), placeholder=t("settings.sub_genre_description_placeholder"), lines=3) + + with gr.Row(): + sub_genre_add_btn = gr.Button(t("settings.sub_genre_add_btn"), variant="primary") + sub_genre_update_btn = gr.Button(t("settings.sub_genre_update_btn"), variant="secondary") + sub_genre_delete_btn = gr.Button(t("settings.sub_genre_delete_btn"), variant="stop") + + sub_genre_op_status = gr.Textbox(label=t("settings.sub_genre_op_status"), interactive=False) def on_sub_genre_select(name): if name: @@ -296,3 +405,64 @@ def build_settings_tab(): sub_genre_add_btn.click(fn=on_sub_genre_add, inputs=[sub_genre_name_input, sub_genre_desc_input], outputs=[sub_genre_op_status, sub_genre_select]) sub_genre_update_btn.click(fn=on_sub_genre_update, inputs=[sub_genre_select, sub_genre_name_input, sub_genre_desc_input], outputs=[sub_genre_op_status, sub_genre_select]) sub_genre_delete_btn.click(fn=on_sub_genre_delete, inputs=[sub_genre_select], outputs=[sub_genre_op_status, sub_genre_select]) + + # Sub-tab: Quản lý phong cách viết + with gr.Tab("Quản lý phong cách viết"): + with gr.Row(): + with gr.Column(scale=1): + gr.Markdown("#### Quản lý danh sách các phong cách viết để AI hiểu và áp dụng") + style_select = gr.Dropdown( + choices=StyleManager.get_style_names(), + label="Chọn phong cách", + interactive=True + ) + + with gr.Column(scale=2): + with gr.Group(): + style_name_input = gr.Textbox(label="Tên phong cách", placeholder="Ví dụ: Mượt mà tự nhiên...") + style_desc_input = gr.Textbox(label="Mô tả phong cách", placeholder="Hướng dẫn chi tiết cách viết...", lines=3) + + with gr.Row(): + style_add_btn = gr.Button("Thêm phong cách", variant="primary") + style_update_btn = gr.Button("Cập nhật", variant="secondary") + style_delete_btn = gr.Button("Xóa", variant="stop") + + style_op_status = gr.Textbox(label="Trạng thái thao tác", interactive=False) + + def on_style_select(name): + if name: + desc = StyleManager.get_style_description(name) + return name, desc or "" + return "", "" + + def on_style_add(name, desc): + if not name.strip(): + return "❌ Tên phong cách không được trống", gr.update() + success = StyleManager.add_style(name.strip(), desc.strip()) + if success: + new_choices = StyleManager.get_style_names() + return "✅ Đã thêm phong cách mới", gr.update(choices=new_choices) + return "❌ Tên phong cách đã tồn tại hoặc lỗi", gr.update() + + def on_style_update(old_name, new_name, desc): + if not old_name: + return "❌ Vui lòng chọn phong cách", gr.update() + success = StyleManager.update_style(old_name, new_name.strip(), desc.strip()) + if success: + new_choices = StyleManager.get_style_names() + return "✅ Đã cập nhật phong cách", gr.update(choices=new_choices) + return "❌ Cập nhật thất bại", gr.update() + + def on_style_delete(name): + if not name: + return "❌ Vui lòng chọn phong cách", gr.update() + success = StyleManager.delete_style(name) + if success: + new_choices = StyleManager.get_style_names() + return "✅ Đã xóa phong cách", gr.update(choices=new_choices) + return "❌ Xóa thất bại", gr.update() + + style_select.change(fn=on_style_select, inputs=[style_select], outputs=[style_name_input, style_desc_input]) + style_add_btn.click(fn=on_style_add, inputs=[style_name_input, style_desc_input], outputs=[style_op_status, style_select]) + style_update_btn.click(fn=on_style_update, inputs=[style_select, style_name_input, style_desc_input], outputs=[style_op_status, style_select]) + style_delete_btn.click(fn=on_style_delete, inputs=[style_select], outputs=[style_op_status, style_select])