Files
pi/packages/ai/test/together-models.test.ts
2026-05-08 16:44:18 +02:00

79 lines
2.6 KiB
TypeScript

import { afterEach, describe, expect, it } from "vitest";
import { findEnvKeys, getEnvApiKey } from "../src/env-api-keys.js";
import { getModel } from "../src/models.js";
const originalTogetherApiKey = process.env.TOGETHER_API_KEY;
afterEach(() => {
if (originalTogetherApiKey === undefined) {
delete process.env.TOGETHER_API_KEY;
} else {
process.env.TOGETHER_API_KEY = originalTogetherApiKey;
}
});
describe("Together models", () => {
it("registers the default Kimi K2.6 model via OpenAI-compatible Chat Completions API", () => {
const model = getModel("together", "moonshotai/Kimi-K2.6");
expect(model).toBeDefined();
expect(model.api).toBe("openai-completions");
expect(model.provider).toBe("together");
expect(model.baseUrl).toBe("https://api.together.ai/v1");
expect(model.reasoning).toBe(true);
expect(model.thinkingLevelMap).toEqual({ minimal: null, low: null, medium: null });
expect(model.input).toEqual(["text", "image"]);
expect(model.contextWindow).toBe(262144);
expect(model.maxTokens).toBe(131000);
expect(model.cost).toEqual({
input: 1.2,
output: 4.5,
cacheRead: 0.2,
cacheWrite: 0,
});
expect(model.compat).toEqual({
supportsStore: false,
supportsDeveloperRole: false,
supportsReasoningEffort: false,
maxTokensField: "max_tokens",
thinkingFormat: "together",
supportsStrictMode: false,
supportsLongCacheRetention: false,
});
});
it("models Together reasoning controls from the Together API surface", () => {
const gptOss = getModel("together", "openai/gpt-oss-120b");
expect(gptOss.thinkingLevelMap).toEqual({ off: null, minimal: null });
expect(gptOss.compat).toMatchObject({
supportsReasoningEffort: true,
thinkingFormat: "openai",
});
const deepSeekV4 = getModel("together", "deepseek-ai/DeepSeek-V4-Pro");
expect(deepSeekV4.thinkingLevelMap).toEqual({
minimal: null,
low: null,
medium: null,
high: "high",
xhigh: null,
});
expect(deepSeekV4.compat).toMatchObject({
supportsReasoningEffort: true,
thinkingFormat: "together",
});
const minimax = getModel("together", "MiniMaxAI/MiniMax-M2.7");
expect(minimax.thinkingLevelMap).toEqual({ off: null, minimal: null, low: null, medium: null });
expect(minimax.compat?.thinkingFormat).toBeUndefined();
expect(minimax.compat?.supportsReasoningEffort).toBe(false);
});
it("resolves TOGETHER_API_KEY from the environment", () => {
process.env.TOGETHER_API_KEY = "test-together-key";
expect(findEnvKeys("together")).toEqual(["TOGETHER_API_KEY"]);
expect(getEnvApiKey("together")).toBe("test-together-key");
});
});