





















@@ -1374,6 +1374,35 @@ describe("openai transport stream", () => {
13741374expect(params.reasoning).toEqual({ effort: "high" });
13751375});
137613761377+it("forwards temperature and top_p to chat completions request params", () => {
1378+const params = buildOpenAICompletionsParams(
1379+{
1380+id: "gpt-5.4",
1381+name: "GPT-5.4",
1382+api: "openai-completions",
1383+provider: "openai",
1384+baseUrl: "https://api.openai.com/v1",
1385+reasoning: false,
1386+input: ["text"],
1387+cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
1388+contextWindow: 200000,
1389+maxTokens: 8192,
1390+} satisfies Model<"openai-completions">,
1391+{
1392+systemPrompt: "system",
1393+messages: [{ role: "user", content: "hi", timestamp: 1 }],
1394+tools: [],
1395+} as never,
1396+{
1397+temperature: 0.4,
1398+topP: 0.9,
1399+},
1400+);
1401+1402+expect(params.temperature).toBe(0.4);
1403+expect(params.top_p).toBe(0.9);
1404+});
1405+13771406it("does not build OpenRouter reasoning params for Hunter Alpha when reasoning is disabled", () => {
13781407const params = buildOpenAICompletionsParams(
13791408{
@@ -1502,6 +1531,7 @@ describe("openai transport stream", () => {
15021531serviceTier: "auto",
15031532sessionId: "session-123",
15041533temperature: 0.2,
1534+topP: 0.85,
15051535},
15061536{
15071537openclaw_session_id: "session-123",
@@ -1525,6 +1555,7 @@ describe("openai transport stream", () => {
15251555expect(params).not.toHaveProperty("prompt_cache_retention");
15261556expect(params).not.toHaveProperty("service_tier");
15271557expect(params).not.toHaveProperty("temperature");
1558+expect(params).not.toHaveProperty("top_p");
15281559});
1529156015301561it("sanitizes Codex responses params after payload hooks mutate them without stripping cache identity", () => {
@@ -1538,6 +1569,7 @@ describe("openai transport stream", () => {
15381569prompt_cache_retention: "24h",
15391570service_tier: "auto",
15401571temperature: 0.2,
1572+top_p: 0.85,
15411573};
1542157415431575const sanitized = __testing.sanitizeOpenAICodexResponsesParams(
@@ -1562,6 +1594,7 @@ describe("openai transport stream", () => {
15621594expect(sanitized).not.toHaveProperty("prompt_cache_retention");
15631595expect(sanitized).not.toHaveProperty("service_tier");
15641596expect(sanitized).not.toHaveProperty("temperature");
1597+expect(sanitized).not.toHaveProperty("top_p");
15651598});
1566159915671600it("preserves custom Codex-compatible responses params", () => {
@@ -1588,6 +1621,7 @@ describe("openai transport stream", () => {
15881621maxTokens: 1024,
15891622sessionId: "session-123",
15901623temperature: 0.2,
1624+topP: 0.85,
15911625},
15921626{
15931627openclaw_session_id: "session-123",
@@ -1603,6 +1637,7 @@ describe("openai transport stream", () => {
16031637});
16041638expect(params.max_output_tokens).toBe(1024);
16051639expect(params.temperature).toBe(0.2);
1640+expect(params.top_p).toBe(0.85);
16061641});
1607164216081643it("preserves custom Codex-compatible responses params after payload hooks mutate them", () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。