You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.1 KiB
TypeScript

import {
router,
publicProcedure,
// Validator
} from "../../trpc/server";
// import { Type as T } from "@sinclair/typebox";
import { createOpenRouter } from "@openrouter/ai-sdk-provider";
import { generateText } from "ai";
import type { Message as UIMessage } from "ai";
import type { OtherParameters } from "./types.js";
import { env } from "../../server/env.js";
const openrouter = createOpenRouter({
apiKey: env.OPENROUTER_API_KEY,
});
export const chat = router({
sendMessage: publicProcedure
.input(
(x) =>
x as {
messages: Array<UIMessage>;
systemPrompt: string;
parameters: OtherParameters;
},
)
.query(async ({ input: { messages, systemPrompt, parameters } }) => {
const response = await generateText({
model: openrouter("mistralai/mistral-nemo"),
messages: [
{ role: "system" as const, content: systemPrompt },
...messages,
],
maxSteps: 3,
tools: undefined,
...parameters,
});
return response;
}),
});