

























@@ -0,0 +1,60 @@
1+import { completeSimple, type Model } from "@mariozechner/pi-ai";
2+import { describe, expect, it } from "vitest";
3+import {
4+createSingleUserPromptMessage,
5+extractNonEmptyAssistantText,
6+isLiveTestEnabled,
7+} from "../../src/agents/live-test-helpers.js";
8+import { buildDeepSeekProvider } from "./provider-catalog.js";
9+10+const DEEPSEEK_KEY = process.env.DEEPSEEK_API_KEY ?? "";
11+const DEEPSEEK_LIVE_MODEL = process.env.OPENCLAW_LIVE_DEEPSEEK_MODEL?.trim() || "deepseek-v4-flash";
12+const LIVE = isLiveTestEnabled(["DEEPSEEK_LIVE_TEST"]);
13+14+const describeLive = LIVE && DEEPSEEK_KEY ? describe : describe.skip;
15+16+function forceDeepSeekNonThinkingPath(payload: unknown): void {
17+if (!payload || typeof payload !== "object") {
18+return;
19+}
20+const request = payload as Record<string, unknown>;
21+request.thinking = { type: "disabled" };
22+delete request.reasoning_effort;
23+}
24+25+function resolveDeepSeekLiveModel(): Model<"openai-completions"> {
26+const provider = buildDeepSeekProvider();
27+const model = provider.models?.find((entry) => entry.id === DEEPSEEK_LIVE_MODEL);
28+if (!model) {
29+throw new Error(`DeepSeek bundled catalog does not include ${DEEPSEEK_LIVE_MODEL}`);
30+}
31+return {
32+provider: "deepseek",
33+baseUrl: provider.baseUrl,
34+ ...model,
35+api: "openai-completions",
36+} as Model<"openai-completions">;
37+}
38+39+describeLive("deepseek plugin live", () => {
40+it("returns assistant text from the bundled V4 model catalog", async () => {
41+const res = await completeSimple(
42+resolveDeepSeekLiveModel(),
43+{
44+messages: createSingleUserPromptMessage(),
45+},
46+{
47+apiKey: DEEPSEEK_KEY,
48+maxTokens: 64,
49+onPayload: forceDeepSeekNonThinkingPath,
50+},
51+);
52+53+if (res.stopReason === "error") {
54+throw new Error(res.errorMessage || "DeepSeek returned error with no message");
55+}
56+57+const text = extractNonEmptyAssistantText(res.content);
58+expect(text.length).toBeGreaterThan(0);
59+}, 60_000);
60+});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。