mirror of
https://github.com/earendil-works/pi.git
synced 2026-06-18 15:54:04 +08:00
79 lines
2.6 KiB
TypeScript
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");
|
|
});
|
|
});
|