mirror of
https://github.com/ArthurDanjou/artagents.git
synced 2026-01-24 17:10:26 +01:00
feat: add chat and file management APIs, implement chat loading and saving functionality
- Introduced new API endpoints for chat management including posting and retrieving chat messages. - Implemented file upload and deletion functionalities for chat and other files. - Added utility functions for streaming text and loading chat data. - Created TypeScript types for models and agents used in the application. - Configured TypeScript settings for server and project. - Added favicon and workspace configuration for pnpm.
This commit is contained in:
55
server/api/chat.post.ts
Normal file
55
server/api/chat.post.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import type { Message } from 'ai'
|
||||
import { appendResponseMessages, appendClientMessage, streamText } from 'ai'
|
||||
import { createWorkersAI } from 'workers-ai-provider'
|
||||
import { loadChat } from '~~/server/utils/chat'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const { id, message, model, agent } = await readBody(event)
|
||||
|
||||
console.log(model, agent)
|
||||
|
||||
const workersAI = createWorkersAI({ binding: hubAI() })
|
||||
|
||||
const previousMessages = await loadChat(id)
|
||||
|
||||
const messages = appendClientMessage({
|
||||
messages: previousMessages,
|
||||
message
|
||||
})
|
||||
|
||||
const result = streamText({
|
||||
model: workersAI('@cf/meta/llama-3.1-8b-instruct'),
|
||||
// system, TODO: add system
|
||||
// prompt, TODO: add prompt
|
||||
messages,
|
||||
// tools, TODO: add tools
|
||||
async onFinish({ response }) {
|
||||
await saveChat({
|
||||
id,
|
||||
messages: appendResponseMessages({
|
||||
messages,
|
||||
responseMessages: response.messages
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
result.consumeStream()
|
||||
|
||||
return result.toDataStreamResponse()
|
||||
})
|
||||
|
||||
async function saveChat({ id, messages }: { id: string, messages: Message[] }) {
|
||||
const hub = hubBlob()
|
||||
|
||||
await hub.delete(`chats/${id}.json`)
|
||||
await $fetch('/api/chats', {
|
||||
method: 'POST',
|
||||
body: {
|
||||
file: {
|
||||
name: `${id}.json`,
|
||||
content: JSON.stringify(messages, null, 2)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user