Spaces:
Sleeping
Sleeping
Download backend/src/services/embeddingService.ts from build-small-hackathon/lovegpt: direct link, hf CLI and curl.
- Browser
- Download file 1.1 kB
-
https://huggingface.co/spaces/build-small-hackathon/lovegpt/resolve/main/backend/src/services/embeddingService.ts
- Command line
-
hf download hf://spaces/build-small-hackathon/lovegpt/backend/src/services/embeddingService.ts
-
curl -L -o embeddingService.ts https://huggingface.co/spaces/build-small-hackathon/lovegpt/resolve/main/backend/src/services/embeddingService.ts
1.1 kB
| import { env, assertEmbeddingsConfigured } from "../config/env"; | |
| interface EmbeddingResponse { | |
| data?: Array<{ | |
| embedding?: number[]; | |
| }>; | |
| } | |
| export async function createEmbedding(input: string): Promise<number[]> { | |
| assertEmbeddingsConfigured(); | |
| const response = await fetch(`${env.EMBEDDING_BASE_URL.replace(/\/$/, "")}/embeddings`, { | |
| method: "POST", | |
| headers: { | |
| Authorization: `Bearer ${env.EMBEDDING_API_KEY}`, | |
| "Content-Type": "application/json" | |
| }, | |
| body: JSON.stringify({ | |
| model: env.EMBEDDING_MODEL, | |
| input, | |
| dimensions: env.EMBEDDING_DIMENSIONS | |
| }) | |
| }); | |
| if (!response.ok) { | |
| const text = await response.text(); | |
| throw new Error(`Embedding provider failed with ${response.status}: ${text}`); | |
| } | |
| const payload = (await response.json()) as EmbeddingResponse; | |
| const embedding = payload.data?.[0]?.embedding; | |
| if (!embedding || embedding.length !== env.EMBEDDING_DIMENSIONS) { | |
| throw new Error(`Embedding provider returned an invalid vector. Expected ${env.EMBEDDING_DIMENSIONS} dimensions.`); | |
| } | |
| return embedding; | |
| } | |