Skip to content

Commit 63c97f5

Browse files
authored
Merge pull request ericc-ch#10 from cuipengfei/master
add the embeddings api
2 parents 35920bb + 77e8838 commit 63c97f5

4 files changed

Lines changed: 55 additions & 0 deletions

File tree

src/routes/embeddings/route.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import consola from "consola"
2+
import { Hono } from "hono"
3+
import { FetchError } from "ofetch"
4+
5+
import type { EmbeddingRequest } from "~/services/copilot/embedding/types"
6+
7+
import { embedding } from "~/services/copilot/embedding/service"
8+
9+
export const embeddingRoutes = new Hono()
10+
11+
embeddingRoutes.post("/", async (c) => {
12+
try {
13+
const embeddings = await embedding(await c.req.json<EmbeddingRequest>())
14+
return c.json(embeddings)
15+
} catch (error) {
16+
if (error instanceof FetchError) {
17+
consola.error(`Request failed: ${error.message}`, error.response?._data)
18+
}
19+
throw error
20+
}
21+
})

src/server.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { cors } from "hono/cors"
33
import { logger } from "hono/logger"
44

55
import { completionRoutes } from "./routes/chat-completions/route"
6+
import { embeddingRoutes } from "./routes/embeddings/route"
67
import { modelRoutes } from "./routes/models/route"
78

89
export const server = new Hono()
@@ -14,7 +15,9 @@ server.get("/", (c) => c.text("Server running"))
1415

1516
server.route("/chat/completions", completionRoutes)
1617
server.route("/models", modelRoutes)
18+
server.route("/embeddings", embeddingRoutes)
1719

1820
// Compatibility with tools that expect v1/ prefix
1921
server.route("/v1/chat/completions", completionRoutes)
2022
server.route("/v1/models", modelRoutes)
23+
server.route("/v1/embeddings", embeddingRoutes)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { EmbeddingRequest, EmbeddingResponse } from "./types"
2+
3+
import { copilot } from "../../api-instance"
4+
5+
export const embedding = (payload: EmbeddingRequest) =>
6+
copilot<EmbeddingResponse>("/embeddings", {
7+
method: "POST",
8+
body: {
9+
...payload,
10+
},
11+
})
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
export interface EmbeddingRequest {
2+
input: string | Array<string>
3+
model: string
4+
}
5+
6+
export interface Embedding {
7+
object: string
8+
embedding: Array<number>
9+
index: number
10+
}
11+
12+
export interface EmbeddingResponse {
13+
object: string
14+
data: Array<Embedding>
15+
model: string
16+
usage: {
17+
prompt_tokens: number
18+
total_tokens: number
19+
}
20+
}

0 commit comments

Comments
 (0)