eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
2 lines • 1.94 kB
JavaScript
import"../node_modules/.pnpm/autoevals@0.0.132_ws@8.21.3_bufferutil@4.1.0_/node_modules/autoevals/jsdist/index.js";import{toInputSchema}from"#tools/schema.js";import{resolveProviderHeaders}from"#internal/gateway.js";import{generateText}from"ai";var AutoevalsOpenAIClientAdapter=class{chat;constructor(e){this.chat={completions:{create:isAutoevalsClientConfig(e)?t=>createChatCompletion(t,e):createProbeChatCompletion}}}};function createAutoevalsClient(e){return new AutoevalsOpenAIClientAdapter(e)}function isAutoevalsClientConfig(e){return`languageModel`in e}async function createProbeChatCompletion(){return{choices:[]}}async function createChatCompletion(e,t){let n=convertTools(e.tools),r=await generateText({headers:resolveProviderHeaders(t.languageModel),model:t.languageModel,messages:convertMessages(e.messages??[]),tools:Object.keys(n).length>0?n:void 0,toolChoice:convertToolChoice(e.tool_choice),providerOptions:t.providerOptions}),i=r.toolCalls.map(e=>({id:e.toolCallId,type:`function`,function:{name:e.toolName,arguments:JSON.stringify(e.input??{})}}));return{choices:[{index:0,finish_reason:i.length>0?`tool_calls`:`stop`,message:{role:`assistant`,content:r.text||null,tool_calls:i.length>0?i:void 0}}]}}function convertMessages(e){return e.map(e=>{let t=contentToText(e.content);switch(e.role){case`assistant`:return{role:`assistant`,content:t};case`developer`:case`system`:return{role:`system`,content:t};default:return{role:`user`,content:t}}})}function contentToText(e){return e==null?``:typeof e==`string`?e:e.map(e=>e.text??``).filter(Boolean).join(`
`)}function convertTools(e){let t={};for(let n of e??[])n.type===`function`&&n.function?.name!==void 0&&(t[n.function.name]={description:n.function.description,inputSchema:toInputSchema(n.function.parameters??{})});return t}function convertToolChoice(e){if(e!==void 0)return typeof e==`string`?e:{type:`tool`,toolName:e.function.name}}export{createAutoevalsClient};