OpenAIClient Class — supabase Architecture
Architecture documentation for the OpenAIClient class in openAi.ts from the supabase codebase.
Entity Profile
Relationship Graph
Source Code
apps/docs/lib/openAi.ts lines 29–72
class OpenAIClient implements OpenAIClientInterface {
static CONTENT_EMBEDDING_MODEL = 'text-embedding-ada-002'
constructor(private client: OpenAI) {}
async createContentEmbedding(
text: string
): Promise<Result<EmbeddingWithTokens, ApiErrorGeneric>> {
return await Result.tryCatchFlat(
this.createContentEmbeddingImpl.bind(this),
convertUnknownToApiError,
text
)
}
private async createContentEmbeddingImpl(
text: string
): Promise<Result<EmbeddingWithTokens, ApiError<ModerationFlaggedDetails>>> {
const query = text.trim()
const moderationResponse = await this.client.moderations.create({ input: query })
const [result] = moderationResponse.results
if (result.flagged) {
return Result.error(
new InvalidRequestError('Content flagged as inappropriate', undefined, {
flagged: true,
categories: result.categories,
})
)
}
const embeddingsResponse = await this.client.embeddings.create({
model: OpenAIClient.CONTENT_EMBEDDING_MODEL,
input: query,
})
const [{ embedding: queryEmbedding }] = embeddingsResponse.data
const tokenCount = embeddingsResponse.usage.total_tokens
return Result.ok({
embedding: queryEmbedding,
token_count: tokenCount,
})
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free