Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { BaseConfig } from "../types";
import AudioApis from "./audio/audio";
import Classification from "./classification/index";
import General from "./general";
import PromptEngine from "./prompt_engine";
import { RequestClient } from "./request";
import { File } from "./store/file";
import Validate from "./validate";
Expand All @@ -29,6 +30,7 @@ export const JigsawStack = (config?: BaseConfig) => {
const audio = new AudioApis(client);
const file = new File(client);
const validate = new Validate(client);
const promptengine = new PromptEngine(client);
const store = {
upload: file.upload,
retrieve: file.retrieve,
Expand Down Expand Up @@ -59,6 +61,7 @@ export const JigsawStack = (config?: BaseConfig) => {
},
store,
validate,
prompt_engine: promptengine,
classification: classification.classify,
};
};
50 changes: 50 additions & 0 deletions src/prompt_engine/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { Stream } from "../lib/streaming";
import { RequestClient } from "../request";
import {
PromptCreateParams,
PromptExecuteParams,
PromptGetResponse,
PromptListParams,
PromptListResponse,
PromptRunParams,
RunPromptDirectResponse,
RunPromptResponse,
RunPromptResponseStream,
} from "./interfaces";

class PromptEngine {
constructor(private readonly client: RequestClient) {}
create = async (params: PromptCreateParams): Promise<{ prompt_engine_id: string }> => {
return await this.client.fetchJSS("/prompt_engine", "POST", params);
};

run_prompt_direct(params: PromptRunParams & { stream: true }): Promise<RunPromptResponseStream<string>>;
run_prompt_direct(params: PromptRunParams & { stream?: false }): Promise<RunPromptDirectResponse>;
async run_prompt_direct(params: PromptRunParams): Promise<RunPromptDirectResponse | RunPromptResponseStream<string>> {
const resp = await this.client.fetchJSS(`/prompt_engine/run`, "POST", params);
if (!params.stream) {
return resp as RunPromptDirectResponse;
}
return Stream.fromReadableStream<string>(resp.body) as RunPromptResponseStream<string>;
}
get = async (id: string): Promise<PromptGetResponse> => {
return await this.client.fetchJSS(`/prompt_engine/${id}`, "GET", {});
};
list = async (params: PromptListParams = { limit: 20, page: 0 }): Promise<PromptListResponse> => {
return await this.client.fetchJSS("/prompt_engine", "GET", {}, params);
};
delete = async (id: string): Promise<{ prompt_engine_id: string }> => {
return await this.client.fetchJSS(`/prompt_engine/${id}`, "DELETE", {});
};
run(params: PromptExecuteParams & { stream: true }): Promise<RunPromptResponseStream<string>>;
run(params: PromptExecuteParams & { stream?: false }): Promise<RunPromptResponse>;
async run(params: PromptExecuteParams): Promise<RunPromptResponseStream<string> | RunPromptResponse> {
const resp = await this.client.fetchJSS(`/prompt_engine/${params.id}`, "POST", params);
if (!params.stream) {
return resp as RunPromptResponse;
}
return Stream.fromReadableStream<string>(resp.body) as RunPromptResponseStream<string>;
}
}

export default PromptEngine;
69 changes: 69 additions & 0 deletions src/prompt_engine/interfaces.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import { Stream } from "../lib/streaming";

export interface PromptCreateParams {
prompt: string;
return_prompt?: string | Array<Record<string, any>> | Record<string, any>;
inputs?: Array<{
key: string;
optional?: boolean;
initial_value?: string;
}>;
use_internet?: boolean;
optimize_prompt?: boolean;
prompt_guard?: Array<
| "defamation"
| "specialized_advice"
| "privacy"
| "intellectual_property"
| "indiscriminate_weapons"
| "hate"
| "sexual_content"
| "elections"
| "code_interpreter_abuse"
>;
}

export interface PromptRunParams extends Omit<PromptCreateParams, "optimize_prompt"> {
input_values?: Record<string, any>;
stream?: boolean;
}

export interface PromptExecuteParams {
id: string;
input_values?: Record<string, any>;
stream?: boolean;
}

export interface PromptListParams {
page?: number;
limit?: number;
}

export interface PromptResult {
id: string;
prompt: string;
inputs: Array<{
key: string;
optional: boolean;
}>;
return_prompt: string;
created_at: string;
}

export interface PromptGetResponse extends PromptResult {
success: boolean;
}

export interface PromptListResponse extends PromptResult {
prompt_engines: PromptResult[];
}

export interface RunPromptResponse {
result: any;
success: boolean;
message?: string;
}

export interface RunPromptResponseStream<T> extends Stream<T> {}

export interface RunPromptDirectResponse extends RunPromptResponse {}