Skip to content

Commit

Permalink
refactor IPromptObject return from build method
Browse files Browse the repository at this point in the history
  • Loading branch information
capaj committed May 13, 2024
1 parent 49565ce commit 9625b99
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 6 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "langtail",
"version": "0.3.2-beta-0",
"version": "0.4.0-beta-0",
"description": "",
"main": "./dist/LangtailNode.js",
"packageManager": "pnpm@8.15.6",
Expand Down
4 changes: 2 additions & 2 deletions src/LangtailPrompts.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -195,15 +195,15 @@ describe(
}
`)

const openAiBody = ltLocal.build(playgroundState, {
const promptObj = ltLocal.build(playgroundState, {
stream: true,
variables: {
optionalExtra: "This is an optional extra",
},

})

expect(openAiBody).toMatchInlineSnapshot(`
expect(promptObj.toOpenAI()).toMatchInlineSnapshot(`
{
"frequency_penalty": 0,
"max_tokens": 800,
Expand Down
34 changes: 31 additions & 3 deletions src/LangtailPrompts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
import { ChatCompletionChunk } from "openai/resources/chat/completions"

import { Stream } from "openai/streaming"
import { ILangtailExtraProps } from "./LangtailNode"
import { ILangtailExtraProps, LangtailNode } from "./LangtailNode"
import { Fetch } from "openai/core"
import { userAgent } from "./userAgent"
import queryString from "query-string"
Expand Down Expand Up @@ -50,16 +50,29 @@ interface IRequestParamsStream extends IRequestParams {
stream: boolean
}

interface IPromptObject {
promptConfig: PlaygroundState
variables: Record<string, string> | undefined
toOpenAI: () => ReturnType<typeof getOpenAIBody>
}

export class LangtailPrompts {
apiKey: string
baseUrl: string
options: Options
ltNode: LangtailNode

constructor(options: Options) {
const { apiKey, baseURL: baseUrl } = options
this.apiKey = apiKey
this.baseUrl = baseUrl ?? "https://api.langtail.com"
this.options = options

this.ltNode = new LangtailNode({
apiKey,
fetch: options.fetch,
onResponse: options.onResponse,
})
}

_createPromptPath({
Expand Down Expand Up @@ -205,8 +218,23 @@ export class LangtailPrompts {
return res.json()
}

build(completionConfig: PlaygroundState, parsedBody: OpenAiBodyType) {
return getOpenAIBody(completionConfig, parsedBody)
build(
completionConfig: PlaygroundState,
parsedBody: OpenAiBodyType,
): IPromptObject {
const openAiBody = getOpenAIBody(completionConfig, parsedBody)
return {
promptConfig: completionConfig,
variables: parsedBody.variables,
toOpenAI: () => openAiBody,
}
}

completions = {
create: async (prompt: IPromptObject) => {
// @ts-expect-error
return this.ltNode.chat.completions.create(prompt.toOpenAI())
},
}

async _record(
Expand Down

0 comments on commit 9625b99

Please sign in to comment.