@samchon/openapi
Version:
Universal OpenAPI to LLM function calling schemas. Transform any Swagger/OpenAPI document into type-safe schemas for OpenAI, Claude, Qwen, and more.
38 lines (34 loc) • 1.35 kB
text/typescript
import type { HttpLlm } from "../HttpLlm";
import type { HttpMigration } from "../HttpMigration";
import { IHttpMigrateRoute } from "../structures/IHttpMigrateRoute";
import { IHttpResponse } from "../structures/IHttpResponse";
import { HttpMigrateRouteFetcher } from "./HttpMigrateRouteFetcher";
export namespace HttpLlmFunctionFetcher {
export const execute = (props: HttpLlm.IFetchProps): Promise<unknown> =>
HttpMigrateRouteFetcher.execute(getFetchArguments("execute", props));
export const propagate = (
props: HttpLlm.IFetchProps,
): Promise<IHttpResponse> =>
HttpMigrateRouteFetcher.propagate(getFetchArguments("propagate", props));
const getFetchArguments = (
from: string,
props: HttpLlm.IFetchProps,
): HttpMigration.IFetchProps => {
const route: IHttpMigrateRoute = props.function.route();
const input: Record<string, any> = props.input;
const valid: boolean = typeof input === "object" && input !== null;
if (valid === false)
throw new Error(
`Error on HttpLlmFunctionFetcher.${from}(): keyworded arguments must be an object`,
);
return {
connection: props.connection,
route,
parameters: Object.fromEntries(
route.parameters.map((p) => [p.key, input[p.key]] as const),
),
query: input.query,
body: input.body,
};
};
}