CoolFace
Apppublic

WaledRashed24/comics

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
predictWithOpenAI.ts55 linesDownload Raw Back to queries
1"use server"2 3import type { ChatCompletionMessageParam } from "openai/resources/chat"4import OpenAI from "openai"5import { LLMPredictionFunctionParams } from "@/types"6 7export async function predict({8  systemPrompt,9  userPrompt,10  nbMaxNewTokens,11  llmVendorConfig12}: LLMPredictionFunctionParams): Promise<string> {13  const openaiApiKey = `${14    llmVendorConfig.apiKey ||15    process.env.AUTH_OPENAI_API_KEY ||16    ""17  }`18  const openaiApiModel = `${19    llmVendorConfig.modelId ||20    process.env.LLM_OPENAI_API_MODEL ||21    "gpt-4-turbo"22  }`23 24  if (!openaiApiKey) { throw new Error(`cannot call OpenAI without an API key`) }25  26 27  const openaiApiBaseUrl = `${process.env.LLM_OPENAI_API_BASE_URL || "https://api.openai.com/v1"}`28 29  const openai = new OpenAI({30    apiKey: openaiApiKey,31    baseURL: openaiApiBaseUrl,32  })33 34  const messages: ChatCompletionMessageParam[] = [35    { role: "system", content: systemPrompt },36    { role: "user", content: userPrompt },37  ]38 39  try {40    const res = await openai.chat.completions.create({41      messages: messages,42      stream: false,43      model: openaiApiModel,44      temperature: 0.8,45      max_tokens: nbMaxNewTokens,46 47      // TODO: use the nbPanels to define a max token limit48    })49 50    return res.choices[0].message.content || ""51  } catch (err) {52    console.error(`error during generation: ${err}`)53    return ""54  }55}