fix: object generation errors; easily-switchable model

This commit is contained in:
Avraham Sakal
2025-08-15 17:01:34 -04:00
parent 341cf5bff1
commit cb749072f2
5 changed files with 30 additions and 9 deletions
+11 -3
View File
@@ -5,7 +5,7 @@ import {
} from "../../trpc/server.js"; } from "../../trpc/server.js";
import { db, type Fact } from "../../database/lowdb.js"; import { db, type Fact } from "../../database/lowdb.js";
import type { DraftMessage } from "../../types.js"; import type { DraftMessage } from "../../types.js";
import { openrouter } from "./provider.js"; import { openrouter, MODEL_NAME } from "./provider.js";
import { generateObject, generateText, jsonSchema } from "ai"; import { generateObject, generateText, jsonSchema } from "ai";
const factTriggersSystemPrompt = ({ const factTriggersSystemPrompt = ({
@@ -119,7 +119,7 @@ export const factTriggers = router({
}, },
}) => { }) => {
const factTriggers = await generateObject({ const factTriggers = await generateObject({
model: openrouter("mistralai/mistral-nemo"), model: openrouter(MODEL_NAME),
messages: [ messages: [
{ {
role: "system" as const, role: "system" as const,
@@ -148,9 +148,17 @@ export const factTriggers = router({
}, },
}, },
}, },
required: ["factTriggers"],
}), }),
// maxSteps: 3, maxRetries: 0,
// tools: undefined, // tools: undefined,
}).catch((err) => {
console.error(err);
return {
object: {
factTriggers: [] as Array<string>,
},
};
}); });
return factTriggers; return factTriggers;
} }
+11 -2
View File
@@ -5,7 +5,7 @@ import {
} from "../../trpc/server.js"; } from "../../trpc/server.js";
import { db, type Fact } from "../../database/lowdb.js"; import { db, type Fact } from "../../database/lowdb.js";
import type { DraftMessage } from "../../types.js"; import type { DraftMessage } from "../../types.js";
import { openrouter } from "./provider.js"; import { MODEL_NAME, openrouter } from "./provider.js";
import { generateObject, generateText, jsonSchema } from "ai"; import { generateObject, generateText, jsonSchema } from "ai";
const factsFromNewMessagesSystemPrompt = ({ const factsFromNewMessagesSystemPrompt = ({
@@ -116,7 +116,7 @@ export const facts = router({
}, },
}) => { }) => {
const factsFromUserMessageResponse = await generateObject({ const factsFromUserMessageResponse = await generateObject({
model: openrouter("mistralai/mistral-nemo"), model: openrouter(MODEL_NAME),
messages: [ messages: [
{ {
role: "system" as const, role: "system" as const,
@@ -144,8 +144,17 @@ export const facts = router({
}, },
}, },
}, },
required: ["facts"],
}), }),
temperature: 0.4, temperature: 0.4,
maxRetries: 0,
}).catch((err) => {
console.error(err);
return {
object: {
facts: [] as Array<string>,
},
};
}); });
return factsFromUserMessageResponse; return factsFromUserMessageResponse;
} }
+2 -2
View File
@@ -4,7 +4,7 @@ import {
createCallerFactory, createCallerFactory,
} from "../../trpc/server"; } from "../../trpc/server";
import { createCaller as createConversationsCaller } from "./conversations.js"; import { createCaller as createConversationsCaller } from "./conversations.js";
import { openrouter } from "./provider.js"; import { MODEL_NAME, openrouter } from "./provider.js";
import { generateObject, generateText, jsonSchema } from "ai"; import { generateObject, generateText, jsonSchema } from "ai";
import type { DraftMessage } from "../../types.js"; import type { DraftMessage } from "../../types.js";
@@ -75,7 +75,7 @@ export const messages = router({
}, },
}) => { }) => {
const runningSummaryResponse = await generateText({ const runningSummaryResponse = await generateText({
model: openrouter("mistralai/mistral-nemo"), model: openrouter(MODEL_NAME),
messages: [ messages: [
{ {
role: "system" as const, role: "system" as const,
+4
View File
@@ -3,3 +3,7 @@ import { env } from "../../server/env.js";
export const openrouter = createOpenRouter({ export const openrouter = createOpenRouter({
apiKey: env.OPENROUTER_API_KEY, apiKey: env.OPENROUTER_API_KEY,
}); });
// export const MODEL_NAME = "mistralai/mistral-nemo";
// export const MODEL_NAME = "openai/gpt-oss-20b";
export const MODEL_NAME = "openai/gpt-5-mini";
+2 -2
View File
@@ -22,7 +22,7 @@ import { facts, createCaller as createCallerFacts } from "./facts.js";
import { createCaller as createCallerMessages } from "./messages.js"; import { createCaller as createCallerMessages } from "./messages.js";
import { createCaller as createCallerFactTriggers } from "./fact-triggers.js"; import { createCaller as createCallerFactTriggers } from "./fact-triggers.js";
import { factTriggers } from "./fact-triggers.js"; import { factTriggers } from "./fact-triggers.js";
import { openrouter } from "./provider.js"; import { MODEL_NAME, openrouter } from "./provider.js";
const factsCaller = createCallerFacts({}); const factsCaller = createCallerFacts({});
const messagesCaller = createCallerMessages({}); const messagesCaller = createCallerMessages({});
@@ -99,7 +99,7 @@ export const chat = router({
* language which this system can execute; usually an interpretted * language which this system can execute; usually an interpretted
* language like Python or JavaScript. */ * language like Python or JavaScript. */
const mainResponse = await generateText({ const mainResponse = await generateText({
model: openrouter("mistralai/mistral-nemo"), model: openrouter(MODEL_NAME),
messages: [ messages: [
previousRunningSummary === "" previousRunningSummary === ""
? { ? {