chat
parent
275ac6e4ed
commit
ce0c150eff
20
news/main.py
20
news/main.py
|
@ -36,19 +36,20 @@ article_repository = ArticleRepository()
|
||||||
|
|
||||||
async def send_chat(messages, fmt):
|
async def send_chat(messages, fmt):
|
||||||
return await AsyncClient(host="192.168.69.3:11434").chat(
|
return await AsyncClient(host="192.168.69.3:11434").chat(
|
||||||
model="deepseek-r1:8b",
|
# model="deepseek-r1:1.5b",
|
||||||
|
model="gemma3:12b-it-qat",
|
||||||
messages=messages,
|
messages=messages,
|
||||||
stream=False,
|
stream=False,
|
||||||
options={
|
options={
|
||||||
'temperature': 0.5,
|
'temperature': 0.5,
|
||||||
# "num_ctx": 128000
|
# "num_ctx": 128000
|
||||||
},
|
},
|
||||||
think=True)
|
think=False)
|
||||||
|
|
||||||
async def send_text_file(channel: discord.abc.Messageable, content: str, filename: str = "article.md") -> None:
|
async def send_text_file(channel: discord.abc.Messageable, content: str, message: str = "📄 Full article attached:", filename: str = "article.md") -> None:
|
||||||
fp = io.BytesIO(content.encode("utf-8"))
|
fp = io.BytesIO(content.encode("utf-8"))
|
||||||
file = discord.File(fp, filename=filename)
|
file = discord.File(fp, filename=filename)
|
||||||
await channel.send("📄 Full article attached:", file=file)
|
await channel.send(message, file=file)
|
||||||
|
|
||||||
|
|
||||||
async def handle_article_url(message: discord.Message, url: str) -> None:
|
async def handle_article_url(message: discord.Message, url: str) -> None:
|
||||||
|
@ -71,7 +72,8 @@ async def handle_article_url(message: discord.Message, url: str) -> None:
|
||||||
{"role": "system", "content": "You are an expert article-analysis assistant."
|
{"role": "system", "content": "You are an expert article-analysis assistant."
|
||||||
# "You WILL respond in JSON format."
|
# "You WILL respond in JSON format."
|
||||||
"Your job is to analyse paragraphs in the article and look for provocative, emotionally charged, and loaded language"
|
"Your job is to analyse paragraphs in the article and look for provocative, emotionally charged, and loaded language"
|
||||||
"You will analyse the paragraphs, determine if they are provocative, and if so, output a capital X for each problematic word."
|
"You WILL analyse the paragraphs, determine if they are provocative, and if so, output a rating between 1 and 100, 100 being the most provocative."
|
||||||
|
"you WILL NOT output a summary of the article or the paragraphs."
|
||||||
"Questions you should ask yourself while reading the paragraph:"
|
"Questions you should ask yourself while reading the paragraph:"
|
||||||
"1. What is the literal meaning of the questionable word or phrase?"
|
"1. What is the literal meaning of the questionable word or phrase?"
|
||||||
"2. What is the emotional or social context of the questionable word or phrase?"
|
"2. What is the emotional or social context of the questionable word or phrase?"
|
||||||
|
@ -82,6 +84,7 @@ async def handle_article_url(message: discord.Message, url: str) -> None:
|
||||||
"You will now be provided with the headline of the article then a paragraph from the article."
|
"You will now be provided with the headline of the article then a paragraph from the article."
|
||||||
"The headline (title of the page) will be provided as \"Headline\": \"EXAMPLE HEADLINE\"."
|
"The headline (title of the page) will be provided as \"Headline\": \"EXAMPLE HEADLINE\"."
|
||||||
"The paragraphs will be provided as \"Paragraph (numbered index)\": \"EXAMPLE PARAGRAPH\"."},
|
"The paragraphs will be provided as \"Paragraph (numbered index)\": \"EXAMPLE PARAGRAPH\"."},
|
||||||
|
{"role": "user", "content": f"\"Headline\": \"{title}\""}
|
||||||
]
|
]
|
||||||
messages.extend(processed_graphs)
|
messages.extend(processed_graphs)
|
||||||
response = await send_chat(messages, "json")
|
response = await send_chat(messages, "json")
|
||||||
|
@ -89,9 +92,12 @@ async def handle_article_url(message: discord.Message, url: str) -> None:
|
||||||
# TODO: parse `html`, summarise, etc.
|
# TODO: parse `html`, summarise, etc.
|
||||||
await message.channel.send(f"✅ Article downloaded – {len(processed_html):,} bytes.")
|
await message.channel.send(f"✅ Article downloaded – {len(processed_html):,} bytes.")
|
||||||
await send_text_file(message.channel, processed_html)
|
await send_text_file(message.channel, processed_html)
|
||||||
await send_text_file(message.channel, response['response'])
|
# await message.channel.send("Sending thinking portion:")
|
||||||
|
# await send_text_file(message.channel, response.message.thinking)
|
||||||
|
await message.channel.send("Sending response portion:")
|
||||||
|
await send_text_file(message.channel, response.message.content)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
await message.channel.send("❌ Sorry, I couldn't fetch that page.")
|
await message.channel.send("❌ Sorry, an internal error has occurred. Please try again later or contact an administrator.")
|
||||||
await message.channel.send(f"```\n{exc}\n```")
|
await message.channel.send(f"```\n{exc}\n```")
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue