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
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
configured_endpoints: 2
configured_endpoints: 8
139 changes: 124 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,29 @@ const openlayer = new Openlayer({
});

async function main() {
const projectCreateResponse = await openlayer.projects.create({ name: 'My Project', taskType: 'llm-base' });

console.log(projectCreateResponse.id);
const dataStreamResponse = await openlayer.inferencePipelines.data.stream(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{
config: {
inputVariableNames: ['user_query'],
outputColumnName: 'output',
numOfTokenColumnName: 'tokens',
costColumnName: 'cost',
timestampColumnName: 'timestamp',
},
rows: [
{
user_query: "what's the meaning of life?",
output: '42',
tokens: 7,
cost: 0.02,
timestamp: 1620000000,
},
],
},
);

console.log(dataStreamResponse.success);
}

main();
Expand All @@ -48,8 +68,26 @@ const openlayer = new Openlayer({
});

async function main() {
const params: Openlayer.ProjectCreateParams = { name: 'My Project', taskType: 'llm-base' };
const projectCreateResponse: Openlayer.ProjectCreateResponse = await openlayer.projects.create(params);
const params: Openlayer.InferencePipelines.DataStreamParams = {
config: {
inputVariableNames: ['user_query'],
outputColumnName: 'output',
numOfTokenColumnName: 'tokens',
costColumnName: 'cost',
timestampColumnName: 'timestamp',
},
rows: [
{
user_query: "what's the meaning of life?",
output: '42',
tokens: 7,
cost: 0.02,
timestamp: 1620000000,
},
],
};
const dataStreamResponse: Openlayer.InferencePipelines.DataStreamResponse =
await openlayer.inferencePipelines.data.stream('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', params);
}

main();
Expand All @@ -66,8 +104,25 @@ a subclass of `APIError` will be thrown:
<!-- prettier-ignore -->
```ts
async function main() {
const projectCreateResponse = await openlayer.projects
.create({ name: 'My Project', taskType: 'llm-base' })
const dataStreamResponse = await openlayer.inferencePipelines.data
.stream('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
config: {
inputVariableNames: ['user_query'],
outputColumnName: 'output',
numOfTokenColumnName: 'tokens',
costColumnName: 'cost',
timestampColumnName: 'timestamp',
},
rows: [
{
user_query: "what's the meaning of life?",
output: '42',
tokens: 7,
cost: 0.02,
timestamp: 1620000000,
},
],
})
.catch(async (err) => {
if (err instanceof Openlayer.APIError) {
console.log(err.status); // 400
Expand Down Expand Up @@ -111,7 +166,7 @@ const openlayer = new Openlayer({
});

// Or, configure per-request:
await openlayer.projects.create({ name: 'My Project', taskType: 'llm-base' }, {
await openlayer.inferencePipelines.data.stream('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', { config: { inputVariableNames: ['user_query'], outputColumnName: 'output', numOfTokenColumnName: 'tokens', costColumnName: 'cost', timestampColumnName: 'timestamp' }, rows: [{ user_query: 'what\'s the meaning of life?', output: '42', tokens: 7, cost: 0.02, timestamp: 1620000000 }] }, {
maxRetries: 5,
});
```
Expand All @@ -128,7 +183,7 @@ const openlayer = new Openlayer({
});

// Override per-request:
await openlayer.projects.create({ name: 'My Project', taskType: 'llm-base' }, {
await openlayer.inferencePipelines.data.stream('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', { config: { inputVariableNames: ['user_query'], outputColumnName: 'output', numOfTokenColumnName: 'tokens', costColumnName: 'cost', timestampColumnName: 'timestamp' }, rows: [{ user_query: 'what\'s the meaning of life?', output: '42', tokens: 7, cost: 0.02, timestamp: 1620000000 }] }, {
timeout: 5 * 1000,
});
```
Expand All @@ -149,15 +204,51 @@ You can also use the `.withResponse()` method to get the raw `Response` along wi
```ts
const openlayer = new Openlayer();

const response = await openlayer.projects.create({ name: 'My Project', taskType: 'llm-base' }).asResponse();
const response = await openlayer.inferencePipelines.data
.stream('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
config: {
inputVariableNames: ['user_query'],
outputColumnName: 'output',
numOfTokenColumnName: 'tokens',
costColumnName: 'cost',
timestampColumnName: 'timestamp',
},
rows: [
{
user_query: "what's the meaning of life?",
output: '42',
tokens: 7,
cost: 0.02,
timestamp: 1620000000,
},
],
})
.asResponse();
console.log(response.headers.get('X-My-Header'));
console.log(response.statusText); // access the underlying Response object

const { data: projectCreateResponse, response: raw } = await openlayer.projects
.create({ name: 'My Project', taskType: 'llm-base' })
const { data: dataStreamResponse, response: raw } = await openlayer.inferencePipelines.data
.stream('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
config: {
inputVariableNames: ['user_query'],
outputColumnName: 'output',
numOfTokenColumnName: 'tokens',
costColumnName: 'cost',
timestampColumnName: 'timestamp',
},
rows: [
{
user_query: "what's the meaning of life?",
output: '42',
tokens: 7,
cost: 0.02,
timestamp: 1620000000,
},
],
})
.withResponse();
console.log(raw.headers.get('X-My-Header'));
console.log(projectCreateResponse.id);
console.log(dataStreamResponse.success);
```

### Making custom/undocumented requests
Expand Down Expand Up @@ -261,8 +352,26 @@ const openlayer = new Openlayer({
});

// Override per-request:
await openlayer.projects.create(
{ name: 'My Project', taskType: 'llm-base' },
await openlayer.inferencePipelines.data.stream(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{
config: {
inputVariableNames: ['user_query'],
outputColumnName: 'output',
numOfTokenColumnName: 'tokens',
costColumnName: 'cost',
timestampColumnName: 'timestamp',
},
rows: [
{
user_query: "what's the meaning of life?",
output: '42',
tokens: 7,
cost: 0.02,
timestamp: 1620000000,
},
],
},
{
httpAgent: new http.Agent({ keepAlive: false }),
},
Expand Down
42 changes: 42 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,56 @@ Methods:

## Commits

Types:

- <code><a href="./src/resources/projects/commits.ts">CommitListResponse</a></code>

Methods:

- <code title="get /projects/{projectId}/versions">client.projects.commits.<a href="./src/resources/projects/commits.ts">list</a>(projectId, { ...params }) -> CommitListResponse</code>

## InferencePipelines

Types:

- <code><a href="./src/resources/projects/inference-pipelines.ts">InferencePipelineCreateResponse</a></code>
- <code><a href="./src/resources/projects/inference-pipelines.ts">InferencePipelineListResponse</a></code>

Methods:

- <code title="post /projects/{projectId}/inference-pipelines">client.projects.inferencePipelines.<a href="./src/resources/projects/inference-pipelines.ts">create</a>(projectId, { ...params }) -> InferencePipelineCreateResponse</code>
- <code title="get /projects/{projectId}/inference-pipelines">client.projects.inferencePipelines.<a href="./src/resources/projects/inference-pipelines.ts">list</a>(projectId, { ...params }) -> InferencePipelineListResponse</code>

# Commits

## TestResults

Types:

- <code><a href="./src/resources/commits/test-results.ts">TestResultListResponse</a></code>

Methods:

- <code title="get /versions/{projectVersionId}/results">client.commits.testResults.<a href="./src/resources/commits/test-results.ts">list</a>(projectVersionId, { ...params }) -> TestResultListResponse</code>

# InferencePipelines

## Data

Types:

- <code><a href="./src/resources/inference-pipelines/data.ts">DataStreamResponse</a></code>

Methods:

- <code title="post /inference-pipelines/{inferencePipelineId}/data-stream">client.inferencePipelines.data.<a href="./src/resources/inference-pipelines/data.ts">stream</a>(inferencePipelineId, { ...params }) -> DataStreamResponse</code>

## TestResults

Types:

- <code><a href="./src/resources/inference-pipelines/test-results.ts">TestResultListResponse</a></code>

Methods:

- <code title="get /inference-pipelines/{inferencePipelineId}/results">client.inferencePipelines.testResults.<a href="./src/resources/inference-pipelines/test-results.ts">list</a>(inferencePipelineId, { ...params }) -> TestResultListResponse</code>
2 changes: 2 additions & 0 deletions src/resources/commits/commits.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ export class Commits extends APIResource {

export namespace Commits {
export import TestResults = TestResultsAPI.TestResults;
export import TestResultListResponse = TestResultsAPI.TestResultListResponse;
export import TestResultListParams = TestResultsAPI.TestResultListParams;
}
2 changes: 1 addition & 1 deletion src/resources/commits/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

export { Commits } from './commits';
export { TestResults } from './test-results';
export { TestResultListResponse, TestResultListParams, TestResults } from './test-results';
Loading