import edward
All checks were successful
Gitea Actions Demo / deploy (push) Successful in 15s

This commit is contained in:
konjacpotato
2025-11-12 21:19:26 +08:00
commit 5267db8a0d
48 changed files with 1848 additions and 0 deletions

View File

@ -0,0 +1,38 @@
from database.database import get_session
from database.tmaterial.crud import get_material_need_summary, update_material
from llm.kimi import Kimi
from log.log_manager import log
from task.manager_task import execute_task
def ai_summary(input_message: str, instance) -> str:
response = instance.generate(input_message)
log(response)
return response
def ai_summary_task():
with get_session() as db:
news_list = get_material_need_summary(db)
if len(news_list) == 0:
log("ai_summary_task finish, task size 0")
return
kimi = Kimi()
for news in news_list:
# input_message = news.url + "\n阅读并生成百字以内的摘要"
# input_message = "请将以下文章内容用一句话进行概括,提炼出最核心的观点或主题,简洁明了,不超过 100 字:\n" + news.url
log(news.url)
input_message = (
"请将以下新闻内容提炼成一句话,简洁明了地传达事件的核心信息,包括谁、什么、何时、何地和为何,字数不超过 100 字:"
+ news.url
)
summary = ai_summary(input_message, kimi)
updates = {"ai_summary": summary}
update_material(db, news.id, updates)
kimi.quit()
log(f"ai_summary_task finish, task size {len(news_list)}")
if __name__ == '__main__':
# input_message_ = "https://www.ofweek.com/ai/2024-12/ART-201700-8500-30653318.html\n阅读并生成200字以内的摘要"
# logger.info(ai_summary(input_message_))
execute_task(ai_summary_task)

View File

@ -0,0 +1,53 @@
from database.database import get_session
from database.tmaterial.crud import get_material_need_summary, update_material
from llm.local.ollama import Ollama
from log.log_manager import log
from task.manager_task import execute_task
def ai_summary(input_message: str, instance) -> str:
response = instance.generate(input_message)
log(response)
return response
def ai_summary_task():
with get_session() as db:
news_list = get_material_need_summary(db)
if len(news_list) == 0:
log("ai_summary_task finish, task size 0")
return
log(f"ai summary task size {len(news_list)}")
ollama = Ollama()
if not ollama.is_service_running():
log("ai_summary_task finish, ollama service not running")
return
for news in news_list:
input_message = (
"""
请为以下新闻生成严格单段落的中文摘要,要求:
1. 保持段落连贯性,不使用任何分段符号(包括空行、缩进或序号)
2. 核心要素按此顺序呈现:
[时间]>[地点]>[主体机构]>[关键事件]>[量化影响]
3. 采用"总-分"结构:
- 首句陈述核心事实(包含最关键的时间地点主体)
- 中间展开关键细节(使用衔接词:同时/此外/值得注意的是)
- 结尾说明当前状态/后续影响
4. 字数严格控制在100个字符以内
5. 禁止使用项目符号、引文格式等非连贯文本元素
新闻原文:
"""
+ news.content
)
summary = ollama.generate_text(input_message)
log(f'{news.url} {summary}')
# 判断summary是否是一段话
if '\n' in summary:
summary = 'summary formate error'
updates = {"ai_summary": summary}
update_material(db, news.id, updates)
log(f"ai_summary_task finish, task size {len(news_list)}")
if __name__ == '__main__':
execute_task(ai_summary_task)