UNPKG

@arizeai/phoenix-client

Version:

A client for the Phoenix API

78 lines 3.72 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.toOpenAI = void 0; const converters_1 = require("../../schemas/llm/converters"); const converters_2 = require("../../schemas/llm/phoenixPrompt/converters"); const formatPromptMessages_1 = require("../../utils/formatPromptMessages"); const tiny_invariant_1 = __importDefault(require("tiny-invariant")); /** * Convert a Phoenix prompt to OpenAI client sdk's chat completion parameters * * @returns The converted chat completion parameters */ const toOpenAI = ({ prompt, variables, }) => { var _a, _b, _c; try { let invocationParameters; if (prompt.invocation_parameters.type === "openai") { invocationParameters = prompt.invocation_parameters.openai; } else { // eslint-disable-next-line no-console console.warn("Prompt is not an OpenAI prompt, falling back to default OpenAI invocation parameters"); invocationParameters = {}; } // parts of the prompt that can be directly converted to OpenAI params const baseCompletionParams = Object.assign({ model: prompt.model_name }, invocationParameters); if (!("messages" in prompt.template)) { return null; } let formattedMessages = prompt.template.messages; if (variables) { formattedMessages = (0, formatPromptMessages_1.formatPromptMessages)(prompt.template_format, formattedMessages, variables); } const messages = formattedMessages.map((message) => { const openAIMessage = (0, converters_1.safelyConvertMessageToProvider)({ message, targetProvider: "OPENAI", }); (0, tiny_invariant_1.default)(openAIMessage, "Message is not valid"); return openAIMessage; }); let tools = (_a = prompt.tools) === null || _a === void 0 ? void 0 : _a.tools.map((tool) => { const openAIToolDefinition = (0, converters_1.safelyConvertToolDefinitionToProvider)({ toolDefinition: tool, targetProvider: "OPENAI", }); (0, tiny_invariant_1.default)(openAIToolDefinition, "Tool definition is not valid"); return openAIToolDefinition; }); tools = ((_b = tools === null || tools === void 0 ? void 0 : tools.length) !== null && _b !== void 0 ? _b : 0) > 0 ? tools : undefined; let tool_choice = (0, converters_1.safelyConvertToolChoiceToProvider)({ toolChoice: (_c = prompt === null || prompt === void 0 ? void 0 : prompt.tools) === null || _c === void 0 ? void 0 : _c.tool_choice, targetProvider: "OPENAI", }) || undefined; tool_choice = (tools === null || tools === void 0 ? void 0 : tools.length) ? tool_choice : undefined; const response_format = prompt.response_format ? converters_2.phoenixResponseFormatToOpenAI.parse(prompt.response_format) : undefined; // combine base and computed params const completionParams = Object.assign(Object.assign({}, baseCompletionParams), { messages, tools, tool_choice, response_format }); return completionParams; } catch (e) { // eslint-disable-next-line no-console console.warn(`Failed to convert prompt to OpenAI params`); // eslint-disable-next-line no-console console.error(e); return null; } }; exports.toOpenAI = toOpenAI; //# sourceMappingURL=toOpenAI.js.map