I think everything that's OpenAI-specific is inside modelProviders at this point, so we can get started adding more providers.
43 lines
1012 B
TypeScript
43 lines
1012 B
TypeScript
import { type JsonValue } from "type-fest";
|
|
import { type OpenaiChatModelProvider } from ".";
|
|
import { type ModelProviderFrontend } from "../types";
|
|
|
|
const modelProviderFrontend: ModelProviderFrontend<OpenaiChatModelProvider> = {
|
|
normalizeOutput: (output) => {
|
|
const message = output.choices[0]?.message;
|
|
if (!message)
|
|
return {
|
|
type: "json",
|
|
value: output as unknown as JsonValue,
|
|
};
|
|
|
|
if (message.content) {
|
|
return {
|
|
type: "text",
|
|
value: message.content,
|
|
};
|
|
} else if (message.function_call) {
|
|
let args = message.function_call.arguments ?? "";
|
|
try {
|
|
args = JSON.parse(args);
|
|
} catch (e) {
|
|
// Ignore
|
|
}
|
|
return {
|
|
type: "json",
|
|
value: {
|
|
...message.function_call,
|
|
arguments: args,
|
|
},
|
|
};
|
|
} else {
|
|
return {
|
|
type: "json",
|
|
value: message as unknown as JsonValue,
|
|
};
|
|
}
|
|
},
|
|
};
|
|
|
|
export default modelProviderFrontend;
|