format with prettier 3
This commit is contained in:
@@ -5,7 +5,7 @@ import { type VariableMap, fillTemplate } from "./fillTemplate";
|
||||
export const evaluateOutput = (
|
||||
modelOutput: ModelOutput,
|
||||
scenario: TestScenario,
|
||||
evaluation: Evaluation
|
||||
evaluation: Evaluation,
|
||||
): boolean => {
|
||||
const output = modelOutput.output as unknown as ChatCompletion;
|
||||
const message = output?.choices?.[0]?.message;
|
||||
|
||||
@@ -20,7 +20,7 @@ export const reevaluateVariant = async (variantId: string) => {
|
||||
await Promise.all(
|
||||
evaluations.map(async (evaluation) => {
|
||||
const passCount = modelOutputs.filter((output) =>
|
||||
evaluateOutput(output, output.testScenario, evaluation)
|
||||
evaluateOutput(output, output.testScenario, evaluation),
|
||||
).length;
|
||||
const failCount = modelOutputs.length - passCount;
|
||||
|
||||
@@ -42,7 +42,7 @@ export const reevaluateVariant = async (variantId: string) => {
|
||||
failCount,
|
||||
},
|
||||
});
|
||||
})
|
||||
}),
|
||||
);
|
||||
};
|
||||
|
||||
@@ -64,7 +64,7 @@ export const reevaluateEvaluation = async (evaluation: Evaluation) => {
|
||||
variants.map(async (variant) => {
|
||||
const outputs = modelOutputs.filter((output) => output.promptVariantId === variant.id);
|
||||
const passCount = outputs.filter((output) =>
|
||||
evaluateOutput(output, output.testScenario, evaluation)
|
||||
evaluateOutput(output, output.testScenario, evaluation),
|
||||
).length;
|
||||
const failCount = outputs.length - passCount;
|
||||
|
||||
@@ -86,6 +86,6 @@ export const reevaluateEvaluation = async (evaluation: Evaluation) => {
|
||||
failCount,
|
||||
},
|
||||
});
|
||||
})
|
||||
}),
|
||||
);
|
||||
};
|
||||
|
||||
@@ -8,17 +8,20 @@ export function fillTemplate(template: string, variables: VariableMap): string {
|
||||
|
||||
export function fillTemplateJson<T extends JSONSerializable>(
|
||||
template: T,
|
||||
variables: VariableMap
|
||||
variables: VariableMap,
|
||||
): T {
|
||||
if (typeof template === "string") {
|
||||
return fillTemplate(template, variables) as T;
|
||||
} else if (Array.isArray(template)) {
|
||||
return template.map((item) => fillTemplateJson(item, variables)) as T;
|
||||
} else if (typeof template === "object" && template !== null) {
|
||||
return Object.keys(template).reduce((acc, key) => {
|
||||
acc[key] = fillTemplateJson(template[key] as JSONSerializable, variables);
|
||||
return acc;
|
||||
}, {} as { [key: string]: JSONSerializable } & T);
|
||||
return Object.keys(template).reduce(
|
||||
(acc, key) => {
|
||||
acc[key] = fillTemplateJson(template[key] as JSONSerializable, variables);
|
||||
return acc;
|
||||
},
|
||||
{} as { [key: string]: JSONSerializable } & T,
|
||||
);
|
||||
} else {
|
||||
return template;
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ type CompletionResponse = {
|
||||
|
||||
export async function getCompletion(
|
||||
payload: JSONSerializable,
|
||||
channel?: string
|
||||
channel?: string,
|
||||
): Promise<CompletionResponse> {
|
||||
const modelName = getModelName(payload);
|
||||
if (!modelName)
|
||||
@@ -37,7 +37,7 @@ export async function getCompletion(
|
||||
return getOpenAIChatCompletion(
|
||||
payload as unknown as CompletionCreateParams,
|
||||
env.OPENAI_API_KEY,
|
||||
channel
|
||||
channel,
|
||||
);
|
||||
}
|
||||
return {
|
||||
@@ -51,7 +51,7 @@ export async function getCompletion(
|
||||
export async function getOpenAIChatCompletion(
|
||||
payload: CompletionCreateParams,
|
||||
apiKey: string,
|
||||
channel?: string
|
||||
channel?: string,
|
||||
): Promise<CompletionResponse> {
|
||||
// If functions are enabled, disable streaming so that we get the full response with token counts
|
||||
if (payload.functions?.length) payload.stream = false;
|
||||
|
||||
@@ -2,7 +2,11 @@ import { omit } from "lodash";
|
||||
import { env } from "~/env.mjs";
|
||||
|
||||
import OpenAI from "openai";
|
||||
import { type ChatCompletion, type ChatCompletionChunk, type CompletionCreateParams } from "openai/resources/chat";
|
||||
import {
|
||||
type ChatCompletion,
|
||||
type ChatCompletionChunk,
|
||||
type CompletionCreateParams,
|
||||
} from "openai/resources/chat";
|
||||
|
||||
// console.log("creating openai client");
|
||||
|
||||
@@ -10,7 +14,7 @@ export const openai = new OpenAI({ apiKey: env.OPENAI_API_KEY });
|
||||
|
||||
export const mergeStreamedChunks = (
|
||||
base: ChatCompletion | null,
|
||||
chunk: ChatCompletionChunk
|
||||
chunk: ChatCompletionChunk,
|
||||
): ChatCompletion => {
|
||||
if (base === null) {
|
||||
return mergeStreamedChunks({ ...chunk, choices: [] }, chunk);
|
||||
@@ -25,11 +29,14 @@ export const mergeStreamedChunks = (
|
||||
|
||||
if (choice.delta?.content)
|
||||
baseChoice.message.content =
|
||||
(baseChoice.message.content as string ?? "") + (choice.delta.content ?? "");
|
||||
((baseChoice.message.content as string) ?? "") + (choice.delta.content ?? "");
|
||||
if (choice.delta?.function_call) {
|
||||
const fnCall = baseChoice.message.function_call ?? {};
|
||||
fnCall.name = (fnCall.name as string ?? "") + (choice.delta.function_call.name as string ?? "");
|
||||
fnCall.arguments = (fnCall.arguments as string ?? "") + (choice.delta.function_call.arguments as string ?? "");
|
||||
fnCall.name =
|
||||
((fnCall.name as string) ?? "") + ((choice.delta.function_call.name as string) ?? "");
|
||||
fnCall.arguments =
|
||||
((fnCall.arguments as string) ?? "") +
|
||||
((choice.delta.function_call.arguments as string) ?? "");
|
||||
}
|
||||
} else {
|
||||
choices.push({ ...omit(choice, "delta"), message: { role: "assistant", ...choice.delta } });
|
||||
|
||||
Reference in New Issue
Block a user