Skip to content

Commit

Permalink
Latest updates to schema, updates to examples (#62)
Browse files Browse the repository at this point in the history
* Latest updates to schema, updates to examples

* Formatting
  • Loading branch information
liamgriffiths authored Apr 18, 2024
1 parent 8a4d7cc commit 4a18cb4
Show file tree
Hide file tree
Showing 12 changed files with 1,382 additions and 585 deletions.
59 changes: 43 additions & 16 deletions examples/kitchen-sink.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ const urls = {
production: { name: "production", value: "https://api.substrate.run" },
};
const backends = {
v0: { name: "v0 (modal)", value: "v0" as const },
v1: { name: "v1 (ray)", value: "v1" as const },
v0: { name: "v0", value: "v0" as const },
v1: { name: "v1", value: "v1" as const },
};

// Not all nodes are available in all backend+env combinations yet, so
Expand Down Expand Up @@ -113,7 +113,7 @@ const examples = [
},
},
temperature: 0.4,
max_tokens: 100,
max_tokens: 300,
}),
envs: ALL_ENVS,
},
Expand Down Expand Up @@ -535,41 +535,68 @@ const error = (message: string, ...rest: any[]) =>
? console.error(`x ${message}`, ...rest)
: console.error(red(`x ${message}`), ...rest);

const measure = async (fn: any): Promise<any> => {
const startTime = new Date();
const time = (ms: any) => `${ms}ms`;
try {
const result = await fn;
const endTime = new Date();
// @ts-ignore: lazy
return { error: null, result, time: time(endTime - startTime) };
} catch (error) {
const endTime = new Date();
// @ts-ignore: lazy
return { error, result: null, time: time(endTime - startTime) };
}
};

async function main() {
const SUBSTRATE_API_KEY = process.env["SUBSTRATE_API_KEY"];

for (let { node, envs } of examples) {
// const except = []
// if (except.includes(node.node)) continue;

// const only = ["SegmentAnything"];
// if (!only.includes(node.node)) continue;
const only = ["GenerateJSON"];
if (!only.includes(node.node)) continue;

if (envs.length === 0) {
warn(node.node, "Not enabled for any env.");
}

for (let env of envs) {
// for (let env of ALL_ENVS) {
// if (env.url.name === "staging") {
// if (env.backend.value !== "v1") continue;
// }
// if (env.url.name === "production") {
// if (env.backend.value !== "v0") continue;
// }

const substrate = new Substrate({
apiKey: SUBSTRATE_API_KEY,
baseUrl: env.url.value,
backend: env.backend.value,
});
const tag = `[${env.url.name}:${env.backend.value}]`;
try {
const res = await substrate.run(node);
const err = res.getError(node);

// NOTE: measure doesn't throw
const res = await measure(substrate.run(node));

if (res.error) {
error(node.node, tag, `RequestError("${res.error.message}")`, res.time);
} else {
const err = res.result.getError(node);
if (err) {
error(node.node, tag, {
via: "res.getError()",
type: err.type,
msg: err.message,
});
error(
node.node,
tag,
`NodeError("${err.message}", ${err.request_id})`,
res.time,
);
} else {
ok(node.node, tag);
ok(node.node, tag, res.time);
}
} catch (err: any) {
error(node.node, tag, { via: "substrate.run()", msg: err.message });
}
}
}
Expand Down
26 changes: 26 additions & 0 deletions examples/large-run.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#!/usr/bin/env -S npx ts-node --transpileOnly

import { Substrate, GenerateText } from "substrate";

async function main() {
const SUBSTRATE_API_KEY = process.env["SUBSTRATE_API_KEY"];

const substrate = new Substrate({
apiKey: SUBSTRATE_API_KEY,
baseUrl: "https://api-staging.substrate.run",
backend: "v1",
});

let nodes = [];
let prompt: any = "once upon a time...";
for (let i = 0; i < 50; i++) {
const node = new GenerateText({ prompt });
nodes.push(node);
prompt = node.future.text.concat(" and then");
}

const res = await substrate.run(...nodes);

console.log(JSON.stringify(res.json, null, 2));
}
main();
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "substrate",
"version": "120240411.0.10",
"version": "120240416.0.10",
"description": "The official SDK for the Substrate API",
"keywords": [],
"type": "module",
Expand Down
4 changes: 3 additions & 1 deletion src/Error.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@ export class RequestTimeoutError extends SubstrateError {}

export class NodeError extends SubstrateError {
type: string;
request_id?: string;
override message: string;

constructor(type: string, message: string) {
constructor(type: string, message: string, request_id?: string) {
super(message);
this.type = type;
this.message = message;
this.request_id = request_id;
}
}
2 changes: 1 addition & 1 deletion src/GEN_VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
20240411.20240415
20240416.20240418
2 changes: 1 addition & 1 deletion src/Node.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export abstract class Node {
if (data?.type && data?.message) {
// NOTE: we only return these errors on client errors.
// Server errors are typically 5xx replies.
return new NodeError(data.type, data.message);
return new NodeError(data.type, data.message, data?.request_id);
} else if (data) {
return data;
}
Expand Down
Loading

0 comments on commit 4a18cb4

Please sign in to comment.