























@@ -14,7 +14,7 @@ const hoisted = vi.hoisted(() => ({
1414}));
15151616vi.mock("@mariozechner/pi-ai", () => ({
17-complete: hoisted.completeMock,
17+completeSimple: hoisted.completeMock,
1818}));
19192020vi.mock("./pi-embedded-runner/model.js", () => ({
@@ -516,4 +516,83 @@ describe("completeWithPreparedSimpleCompletionModel", () => {
516516},
517517);
518518});
519+520+it("normalizes OpenClaw-only thinking levels before using pi-ai simple completion", async () => {
521+const model = {
522+provider: "openai",
523+id: "gpt-5.4",
524+name: "gpt-5.4",
525+api: "openai-responses",
526+reasoning: true,
527+input: ["text"],
528+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
529+contextWindow: 128000,
530+maxTokens: 4096,
531+} satisfies Model<"openai-responses">;
532+533+await completeWithPreparedSimpleCompletionModel({
534+ model,
535+auth: {
536+apiKey: "sk-test",
537+source: "env:OPENAI_API_KEY",
538+mode: "api-key",
539+},
540+context: {
541+messages: [{ role: "user", content: "pong", timestamp: 1 }],
542+},
543+options: {
544+reasoning: "max",
545+},
546+});
547+548+expect(hoisted.completeMock).toHaveBeenCalledWith(
549+model,
550+{
551+messages: [{ role: "user", content: "pong", timestamp: 1 }],
552+},
553+{
554+reasoning: "xhigh",
555+apiKey: "sk-test",
556+},
557+);
558+});
559+560+it("omits reasoning for local simple completion when thinking is off", async () => {
561+const model = {
562+provider: "openai",
563+id: "gpt-5.4",
564+name: "gpt-5.4",
565+api: "openai-responses",
566+reasoning: true,
567+input: ["text"],
568+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
569+contextWindow: 128000,
570+maxTokens: 4096,
571+} satisfies Model<"openai-responses">;
572+573+await completeWithPreparedSimpleCompletionModel({
574+ model,
575+auth: {
576+apiKey: "sk-test",
577+source: "env:OPENAI_API_KEY",
578+mode: "api-key",
579+},
580+context: {
581+messages: [{ role: "user", content: "pong", timestamp: 1 }],
582+},
583+options: {
584+reasoning: "off",
585+},
586+});
587+588+expect(hoisted.completeMock).toHaveBeenCalledWith(
589+model,
590+{
591+messages: [{ role: "user", content: "pong", timestamp: 1 }],
592+},
593+{
594+apiKey: "sk-test",
595+},
596+);
597+});
519598});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。