diff --git a/examples/nodejs/examples/pipes/pipe.create.ts b/examples/nodejs/examples/pipes/pipe.create.ts new file mode 100644 index 0000000..d7f8769 --- /dev/null +++ b/examples/nodejs/examples/pipes/pipe.create.ts @@ -0,0 +1,17 @@ +import 'dotenv/config'; +import {Pipe} from 'langbase'; + +const pipe = new Pipe({ + apiKey: process.env.LANGBASE_API_KEY!, +}); + +async function main() { + const response = await pipe.create({ + name: 'summary-pipe', + status: 'private', + }); + + console.log(response); +} + +main(); diff --git a/examples/nodejs/examples/pipes/pipe.update.ts b/examples/nodejs/examples/pipes/pipe.update.ts new file mode 100644 index 0000000..9612a62 --- /dev/null +++ b/examples/nodejs/examples/pipes/pipe.update.ts @@ -0,0 +1,18 @@ +import 'dotenv/config'; +import {Pipe} from 'langbase'; + +const pipe = new Pipe({ + apiKey: process.env.LANGBASE_API_KEY!, +}); + +async function main() { + const response = await pipe.update({ + name: 'summary-pipe', + description: 'This is a pipe updated with the SDK', + model: 'google:gemini-1.5-flash-8b-latest', + }); + + console.log(response); +} + +main(); diff --git a/examples/nodejs/package.json b/examples/nodejs/package.json index decea85..9e14d67 100644 --- a/examples/nodejs/package.json +++ b/examples/nodejs/package.json @@ -7,6 +7,8 @@ "main": "index.js", "scripts": { "generate-text": "npx tsx ./examples/pipes/generate-text.ts", + "pipe.create": "npx tsx ./examples/pipes/pipe.create.ts", + "pipe.update": "npx tsx ./examples/pipes/pipe.update.ts", "pipe.run": "npx tsx ./examples/pipes/pipe.run.ts", "pipe.run.stream": "npx tsx ./examples/pipes/pipe.run.stream.ts", "generate-text-generate-pipe": "npx tsx ./examples/pipes/generate-text-generate-pipe.ts", diff --git a/package.json b/package.json index c6170d5..8006e89 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "license": "Apache-2.0", "scripts": { "dev": "turbo dev", + "dev:pkgs": "turbo run dev --filter=./packages/*", "prepare": "husky", "lint": "turbo lint", "test": "turbo test", diff --git a/packages/langbase/src/pipes/pipes.ts b/packages/langbase/src/pipes/pipes.ts index 024e866..efe4877 100644 --- a/packages/langbase/src/pipes/pipes.ts +++ b/packages/langbase/src/pipes/pipes.ts @@ -24,7 +24,7 @@ export interface ToolCall { export interface Message { role: Role; content: string | null; - name?: string; + name?: 'json' | 'safety' | 'opening' | 'rag'; tool_call_id?: string; tool_calls?: ToolCall[]; } @@ -107,6 +107,57 @@ export interface PipeOptions { name?: string; } +interface ToolChoice { + type: 'function'; + function: {name: string}; +} + +interface BaseOptions { + name: string; + description?: string; + status?: 'public' | 'private'; + upsert?: boolean; + model?: string; + stream?: boolean; + json?: boolean; + store?: boolean; + moderate?: boolean; + top_p?: number; + max_tokens?: number; + temperature?: number; + presence_penalty?: number; + frequency_penalty?: number; + stop?: string[]; + tools?: { + type: 'function'; + function: { + name: string; + description?: string; + parameters?: Record; + }; + }[]; + tool_choice?: 'auto' | 'required' | ToolChoice; + parallel_tool_calls?: boolean; + messages?: Message[]; + variables?: Variable[]; + memory?: { + name: string; + }[]; +} + +interface BaseResponse { + name: string; + description: string; + status: 'public' | 'private'; + owner_login: string; + url: string; +} + +export interface CreateOptions extends BaseOptions {} +export interface UpdateOptions extends BaseOptions {} +export interface CreateResponse extends BaseResponse {} +export interface UpdateResponse extends BaseResponse {} + export class Pipe { private request: Request; private pipe: PipeBaseAI; @@ -152,6 +203,20 @@ export class Pipe { body: {...options, stream: true}, }); } + + async create(options: CreateOptions): Promise { + return this.request.post({ + endpoint: '/v1/pipes', + body: options, + }); + } + + async update(options: UpdateOptions): Promise { + return this.request.post({ + endpoint: `/v1/pipes/${options.name}`, + body: options, + }); + } } /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cd62475..ea23b07 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5992,7 +5992,7 @@ snapshots: eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.1(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) @@ -6046,7 +6046,7 @@ snapshots: enhanced-resolve: 5.12.0 eslint: 8.57.0 eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -6085,7 +6085,7 @@ snapshots: eslint: 8.57.0 ignore: 5.3.1 - eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.29.0(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.1.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3