diff --git a/examples/nextjs-example/src/jobs/openai.ts b/examples/nextjs-example/src/jobs/openai.ts index 930cb7564..38a2a499e 100644 --- a/examples/nextjs-example/src/jobs/openai.ts +++ b/examples/nextjs-example/src/jobs/openai.ts @@ -20,7 +20,11 @@ new Job(client, { openai, }, run: async (payload, io, ctx) => { - await io.openai.listModels("list-models"); + const models = await io.openai.listModels("list-models"); + + await io.openai.retrieveModel("get-model", { + model: models[0].id, + }); await io.openai.backgroundCreateChatCompletion( "background-chat-completion", diff --git a/integrations/openai/src/index.ts b/integrations/openai/src/index.ts index 1a4cfcc4d..0cb2569d7 100644 --- a/integrations/openai/src/index.ts +++ b/integrations/openai/src/index.ts @@ -1,29 +1,31 @@ -import { OpenAIApi, Configuration } from "openai"; import type { IntegrationClient, TriggerIntegration } from "@trigger.dev/sdk"; +import { Configuration, OpenAIApi } from "openai"; import { + backgroundCreateChatCompletion, + backgroundCreateCompletion, + cancelFineTune, createChatCompletion, createCompletion, - backgroundCreateCompletion, - backgroundCreateChatCompletion, - listModels, createFile, - listFiles, - createFineTuneFile, createFineTune, - listFineTunes, - retrieveFineTune, - cancelFineTune, - listFineTuneEvents, + createFineTuneFile, deleteFineTune, + listFiles, + listFineTuneEvents, + listFineTunes, + listModels, + retrieveFineTune, + retrieveModel, } from "./tasks"; import { OpenAIIntegrationOptions } from "./types"; const tasks = { + retrieveModel, + listModels, createCompletion, createChatCompletion, backgroundCreateCompletion, backgroundCreateChatCompletion, - listModels, createFile, listFiles, createFineTuneFile, diff --git a/integrations/openai/src/tasks.ts b/integrations/openai/src/tasks.ts index cf8a102da..0f610ab49 100644 --- a/integrations/openai/src/tasks.ts +++ b/integrations/openai/src/tasks.ts @@ -11,6 +11,59 @@ import { Prettify, fileFromString } from "@trigger.dev/integration-kit"; type OpenAIClientType = InstanceType; +type RetrieveModelRequest = { + model: string; +}; + +type RetrieveModelResponseData = Prettify< + Awaited>["data"] +>; + +export const retrieveModel: AuthenticatedTask< + OpenAIClientType, + Prettify, + RetrieveModelResponseData +> = { + run: async (params, client) => { + return client.retrieveModel(params.model).then((res) => res.data); + }, + init: (params) => { + return { + name: "Retrieve model", + params, + icon: "openai", + properties: [ + { + label: "Model id", + text: params.model, + }, + ], + }; + }, +}; + +type ListModelsResponseData = Awaited< + ReturnType +>["data"]["data"]; + +export const listModels: AuthenticatedTask< + OpenAIClientType, + void, + Prettify +> = { + run: async (params, client) => { + return client.listModels().then((res) => res.data.data); + }, + init: (params) => { + return { + name: "List models", + params, + icon: "openai", + properties: [], + }; + }, +}; + export const createCompletion: AuthenticatedTask< OpenAIClientType, Prettify, @@ -159,28 +212,6 @@ export const backgroundCreateChatCompletion: AuthenticatedTask< }, }; -type ListModelsResponseData = Awaited< - ReturnType ->["data"]; - -export const listModels: AuthenticatedTask< - OpenAIClientType, - void, - Prettify -> = { - run: async (params, client) => { - return client.listModels().then((res) => res.data); - }, - init: (params) => { - return { - name: "List models", - params, - icon: "openai", - properties: [], - }; - }, -}; - type CreateFileResponseData = Awaited< ReturnType >["data"];