mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-11 03:39:49 +08:00
feat: add embedding and rerank support
This commit is contained in:
@@ -700,7 +700,7 @@ function runMappingTest(testingKey: string, modelName: string) {
|
||||
selectedTestEndpoint.value = activeEndpoints.value[0] ?? null
|
||||
testRequestHeadersResetValue.value = buildDefaultModelTestRequestHeaders()
|
||||
testRequestHeadersDraft.value = testRequestHeadersResetValue.value
|
||||
testRequestBodyResetValue.value = buildDefaultModelTestRequestBody(modelName)
|
||||
testRequestBodyResetValue.value = buildDefaultModelTestRequestBody(modelName, selectedTestEndpoint.value?.api_format)
|
||||
testRequestBodyDraft.value = testRequestBodyResetValue.value
|
||||
}
|
||||
|
||||
|
||||
@@ -543,6 +543,7 @@ async function testModelConnection(model: Model) {
|
||||
testRequestHeadersDraft.value = testRequestHeadersResetValue.value
|
||||
testRequestBodyResetValue.value = buildDefaultModelTestRequestBody(
|
||||
model.global_model_name || model.provider_model_name,
|
||||
selectedTestEndpoint.value?.api_format,
|
||||
)
|
||||
testRequestBodyDraft.value = testRequestBodyResetValue.value
|
||||
modelTest.testResult.value = null
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
|
||||
import { buildDefaultModelTestRequestBody } from '../model-test-request'
|
||||
|
||||
describe('buildDefaultModelTestRequestBody', () => {
|
||||
it.each([
|
||||
'openai:embedding',
|
||||
'gemini:embedding',
|
||||
'jina:embedding',
|
||||
'doubao:embedding',
|
||||
' OPENAI:EMBEDDING ',
|
||||
])('uses embedding input payloads for %s api formats', (apiFormat) => {
|
||||
const body = JSON.parse(buildDefaultModelTestRequestBody('text-embedding-3-small', apiFormat))
|
||||
|
||||
expect(body).toEqual({
|
||||
model: 'text-embedding-3-small',
|
||||
input: 'This is a test embedding input.',
|
||||
})
|
||||
expect(body.messages).toBeUndefined()
|
||||
expect(body.stream).toBeUndefined()
|
||||
})
|
||||
|
||||
it.each([
|
||||
'openai:rerank',
|
||||
'jina:rerank',
|
||||
' JINA:RERANK ',
|
||||
])('uses rerank query/documents payloads for %s api formats', (apiFormat) => {
|
||||
const body = JSON.parse(buildDefaultModelTestRequestBody('bge-reranker-base', apiFormat))
|
||||
|
||||
expect(body.model).toBe('bge-reranker-base')
|
||||
expect(body.query).toBe('This is a test rerank query.')
|
||||
expect(body.documents).toHaveLength(2)
|
||||
expect(body.top_n).toBe(1)
|
||||
expect(body.return_documents).toBe(true)
|
||||
expect(body.messages).toBeUndefined()
|
||||
expect(body.stream).toBeUndefined()
|
||||
})
|
||||
|
||||
it('keeps chat payloads for chat api formats', () => {
|
||||
const body = JSON.parse(buildDefaultModelTestRequestBody('gpt-5.1', 'openai:chat'))
|
||||
|
||||
expect(body.messages).toEqual([{ role: 'user', content: 'Hello! This is a test message.' }])
|
||||
expect(body.stream).toBe(true)
|
||||
expect(body.input).toBeUndefined()
|
||||
})
|
||||
})
|
||||
@@ -4,7 +4,27 @@ const DEFAULT_MODEL_TEST_MESSAGE = 'Hello! This is a test message.'
|
||||
export const POOL_TEST_CONCURRENCY = 5
|
||||
export const SINGLE_TEST_CONCURRENCY = 1
|
||||
|
||||
export function buildDefaultModelTestRequestBody(modelName: string): string {
|
||||
export function buildDefaultModelTestRequestBody(modelName: string, apiFormat?: string | null): string {
|
||||
if (apiFormat?.trim().toLowerCase().endsWith(':embedding')) {
|
||||
return JSON.stringify({
|
||||
model: modelName,
|
||||
input: 'This is a test embedding input.',
|
||||
}, null, 2)
|
||||
}
|
||||
|
||||
if (apiFormat?.trim().toLowerCase().endsWith(':rerank')) {
|
||||
return JSON.stringify({
|
||||
model: modelName,
|
||||
query: 'This is a test rerank query.',
|
||||
documents: [
|
||||
'This document is relevant to the test query.',
|
||||
'This document is unrelated.',
|
||||
],
|
||||
top_n: 1,
|
||||
return_documents: true,
|
||||
}, null, 2)
|
||||
}
|
||||
|
||||
return JSON.stringify({
|
||||
model: modelName,
|
||||
messages: [
|
||||
|
||||
Reference in New Issue
Block a user