feat: add AI chat and summarize endpoints with database integration

- Implemented a new chat endpoint that utilizes Groq for chat completions based on news articles.
- Added a summarize endpoint that fetches news articles from the database and generates summaries using Groq.
- Introduced a new package "@vueuse/core" for improved reactivity.
- Created a comprehensive command UI component with various subcomponents for better user interaction.
- Developed a scraping module using Scrapy to fetch news articles from Google News.
- Added validation and sanitization for slug parameters in the fetch article endpoint.
This commit is contained in:
yuanhau 2025-05-10 21:57:38 +08:00
parent 92a0358744
commit bf357f1c84
35 changed files with 809 additions and 11 deletions

View file

@ -0,0 +1,35 @@
import { Groq } from 'groq-sdk';
import sql from "~/server/components/postgres";
const groq = new Groq();
export default defineEventHandler(async (event) => {
const slug = getRouterParam(event, 'slug');
const body = await readBody(event);
const fetchNewsArticle = await sql`
select * from newArticle
where slug = ${slug}
`;
const chatCompletion = await groq.chat.completions.create({
"messages": [
{
"role": "user",
"content": `${body}`
},
{
"role": "system",
"content": `You are a news chat, the following content will be used to chat with the user title: ${fetchNewsArticle.title}\n content: ${fetchNewsArticle.content}`
}
],
"model": "llama3-70b-8192",
"temperature": 1,
"max_completion_tokens": 1024,
"top_p": 1,
"stream": true,
"stop": null
});
for await (const chunk of chatCompletion) {
process.stdout.write(chunk.choices[0]?.delta?.content || '');
}
})