Skip to content

Commit

Permalink
feat(api): update via SDK Studio (#33)
Browse files Browse the repository at this point in the history
  • Loading branch information
stainless-app[bot] authored May 15, 2024
1 parent aa3bb85 commit 8024098
Show file tree
Hide file tree
Showing 6 changed files with 165 additions and 1 deletion.
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
configured_endpoints: 6
configured_endpoints: 7
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/groqcloud%2Fgroqcloud-c28de228634e737a173375583a09eef5e0d7fa81fcdf7090d14d194e6ef4fdc5.yml
10 changes: 10 additions & 0 deletions api.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
# Embeddings

Types:

- <code><a href="./src/resources/embeddings.ts">EmbeddingCreateResponse</a></code>

Methods:

- <code title="post /openai/v1/embeddings">client.embeddings.<a href="./src/resources/embeddings.ts">create</a>({ ...params }) -> EmbeddingCreateResponse</code>

# Chat

## Completions
Expand Down
5 changes: 5 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ export class Groq extends Core.APIClient {
this.apiKey = apiKey;
}

embeddings: API.Embeddings = new API.Embeddings(this);
chat: API.Chat = new API.Chat(this);
audio: API.Audio = new API.Audio(this);
models: API.Models = new API.Models(this);
Expand Down Expand Up @@ -177,6 +178,10 @@ export import fileFromPath = Uploads.fileFromPath;
export namespace Groq {
export import RequestOptions = Core.RequestOptions;

export import Embeddings = API.Embeddings;
export import EmbeddingCreateResponse = API.EmbeddingCreateResponse;
export import EmbeddingCreateParams = API.EmbeddingCreateParams;

export import Chat = API.Chat;

export import Audio = API.Audio;
Expand Down
113 changes: 113 additions & 0 deletions src/resources/embeddings.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import * as Core from '../core';
import { APIResource } from '../resource';
import * as EmbeddingsAPI from './embeddings';

export class Embeddings extends APIResource {
/**
* Creates an embedding vector representing the input text.
*/
create(
body: EmbeddingCreateParams,
options?: Core.RequestOptions,
): Core.APIPromise<EmbeddingCreateResponse> {
return this._client.post('/openai/v1/embeddings', { body, ...options });
}
}

export interface EmbeddingCreateResponse {
/**
* The list of embeddings generated by the model.
*/
data: Array<EmbeddingCreateResponse.Data>;

/**
* The name of the model used to generate the embedding.
*/
model: string;

/**
* The object type, which is always "list".
*/
object: 'list';

/**
* The usage information for the request.
*/
usage: EmbeddingCreateResponse.Usage;
}

export namespace EmbeddingCreateResponse {
/**
* Represents an embedding vector returned by embedding endpoint.
*/
export interface Data {
/**
* The embedding vector, which is a list of floats. The length of vector depends on
* the model as listed in the [embedding guide](/docs/guides/embeddings).
*/
embedding: Array<number> | string;

/**
* The index of the embedding in the list of embeddings.
*/
index: number;

/**
* The object type, which is always "embedding".
*/
object: 'embedding';
}

/**
* The usage information for the request.
*/
export interface Usage {
/**
* The number of tokens used by the prompt.
*/
prompt_tokens: number;

/**
* The total number of tokens used by the request.
*/
total_tokens: number;
}
}

export interface EmbeddingCreateParams {
/**
* Input text to embed, encoded as a string or array of tokens. To embed multiple
* inputs in a single request, pass an array of strings or array of token arrays.
* The input must not exceed the max input tokens for the model, cannot be an empty
* string, and any array must be 2048 dimensions or less.
*/
input: string | Array<string>;

/**
* ID of the model to use.
*/
model: string;

/**
* The number of dimensions to return the embeddings in.
*/
dimensions?: number;

/**
* The format to return the embeddings in.
*/
encoding_format?: 'float' | 'base64';

/**
* A unique identifier representing your end-user, which can help us monitor and
* detect abuse.
*/
user?: string | null;
}

export namespace Embeddings {
export import EmbeddingCreateResponse = EmbeddingsAPI.EmbeddingCreateResponse;
export import EmbeddingCreateParams = EmbeddingsAPI.EmbeddingCreateParams;
}
1 change: 1 addition & 0 deletions src/resources/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

export { Chat } from './chat/chat';
export { EmbeddingCreateResponse, EmbeddingCreateParams, Embeddings } from './embeddings';
export { Model, ModelList, Models } from './models';
export { Translation, Audio } from './audio/audio';
35 changes: 35 additions & 0 deletions tests/api-resources/embeddings.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import Groq from 'groq-sdk';
import { Response } from 'node-fetch';

const groq = new Groq({
apiKey: 'My API Key',
baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
});

describe('resource embeddings', () => {
test('create: only required params', async () => {
const responsePromise = groq.embeddings.create({
input: 'The quick brown fox jumped over the lazy dog',
model: 'nomic-embed-text-v1.5',
});
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
expect(response).not.toBeInstanceOf(Response);
const dataAndResponse = await responsePromise.withResponse();
expect(dataAndResponse.data).toBe(response);
expect(dataAndResponse.response).toBe(rawResponse);
});

test('create: required and optional params', async () => {
const response = await groq.embeddings.create({
input: 'The quick brown fox jumped over the lazy dog',
model: 'nomic-embed-text-v1.5',
dimensions: 1,
encoding_format: 'float',
user: 'string',
});
});
});

0 comments on commit 8024098

Please sign in to comment.