|
@@ -194,7 +194,11 @@ describe("ModelResolver", () => {
|
|
|
Effect.gen(function* () {
|
|
Effect.gen(function* () {
|
|
|
const resolved = yield* ModelResolver.fromCatalogModel(
|
|
const resolved = yield* ModelResolver.fromCatalogModel(
|
|
|
model(Provider.aisdk("@ai-sdk/openai-compatible"), {
|
|
model(Provider.aisdk("@ai-sdk/openai-compatible"), {
|
|
|
- compatibility: { reasoningField: "vendor_reasoning" },
|
|
|
|
|
|
|
+ compatibility: {
|
|
|
|
|
+ reasoningField: "vendor_reasoning",
|
|
|
|
|
+ maxTokensField: "max_completion_tokens",
|
|
|
|
|
+ requireFinishReason: false,
|
|
|
|
|
+ },
|
|
|
settings: {
|
|
settings: {
|
|
|
apiKey: "settings-secret",
|
|
apiKey: "settings-secret",
|
|
|
baseURL: "https://compatible.example/v1",
|
|
baseURL: "https://compatible.example/v1",
|
|
@@ -204,7 +208,8 @@ describe("ModelResolver", () => {
|
|
|
body: {},
|
|
body: {},
|
|
|
}),
|
|
}),
|
|
|
)
|
|
)
|
|
|
- const request = LLM.request({ model: resolved, prompt: "Hello" })
|
|
|
|
|
|
|
+ const request = LLM.request({ model: resolved, prompt: "Hello", generation: { maxTokens: 10 } })
|
|
|
|
|
+ const prepared = yield* compileRequest(request)
|
|
|
const headers = yield* resolved.route.auth.apply({
|
|
const headers = yield* resolved.route.auth.apply({
|
|
|
request,
|
|
request,
|
|
|
method: "POST",
|
|
method: "POST",
|
|
@@ -216,6 +221,10 @@ describe("ModelResolver", () => {
|
|
|
expect(headers.authorization).toBe("Bearer settings-secret")
|
|
expect(headers.authorization).toBe("Bearer settings-secret")
|
|
|
expect(resolved.route.id).toBe("openai-compatible-chat")
|
|
expect(resolved.route.id).toBe("openai-compatible-chat")
|
|
|
expect(resolved.compatibility?.reasoningField).toBe("vendor_reasoning")
|
|
expect(resolved.compatibility?.reasoningField).toBe("vendor_reasoning")
|
|
|
|
|
+ expect(resolved.compatibility?.maxTokensField).toBe("max_completion_tokens")
|
|
|
|
|
+ expect(resolved.compatibility?.requireFinishReason).toBe(false)
|
|
|
|
|
+ expect(prepared.body).toMatchObject({ max_completion_tokens: 10 })
|
|
|
|
|
+ expect(prepared.body).not.toHaveProperty("max_tokens")
|
|
|
expect(resolved.route.endpoint.baseURL).toBe("https://compatible.example/v1")
|
|
expect(resolved.route.endpoint.baseURL).toBe("https://compatible.example/v1")
|
|
|
expect(resolved.route.defaults.http?.body).toEqual({})
|
|
expect(resolved.route.defaults.http?.body).toEqual({})
|
|
|
}),
|
|
}),
|