Mit Roslyn umbenannt (Verweise folgen, Zeichenketten bleiben unberuehrt). Nicht umbenannt, weil gespeichert oder ueber die API gebunden (Stufe 4e): Properties, Record-Parameter, Enum-Member sowie die Parameter der Endpunkt-Handler (Routen-/Query-Bindung ueber den Namen). Die JSON-Felder anonymer Objekte bleiben ausdruecklich benannt (JsonFilter: pfad). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
39 lines
1.2 KiB
C#
39 lines
1.2 KiB
C#
using ClawdDotNet.Core.Tests.Infrastructure;
|
|
using Shouldly;
|
|
|
|
namespace ClawdDotNet.Core.Tests.Engine;
|
|
|
|
/// <summary>
|
|
/// Shape of the outgoing request. B11/T8: <c>max_tokens</c> must be set so that a
|
|
/// model does not exhaust its full (most expensive) output limit in one step.
|
|
/// </summary>
|
|
public sealed class RequestShapeTests
|
|
{
|
|
[Fact]
|
|
public async Task The_request_sets_max_tokens()
|
|
{
|
|
var fixture = new EngineFixture();
|
|
var agent = fixture.AddAgent("agent-a");
|
|
agent.LoopGuard.MaxResponseTokens = 4_096;
|
|
fixture.Client.RespondsWithText("fertig");
|
|
|
|
await fixture.Engine.RunAsync(agent, "los", "test-instance", default);
|
|
|
|
fixture.Client.ReceivedRequests.ShouldNotBeEmpty();
|
|
fixture.Client.ReceivedRequests[0].MaxTokens.ShouldBe(4_096);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task With_value_0_max_tokens_stays_unset()
|
|
{
|
|
var fixture = new EngineFixture();
|
|
var agent = fixture.AddAgent("agent-a");
|
|
agent.LoopGuard.MaxResponseTokens = 0; // provider default
|
|
fixture.Client.RespondsWithText("fertig");
|
|
|
|
await fixture.Engine.RunAsync(agent, "los", "test-instance", default);
|
|
|
|
fixture.Client.ReceivedRequests[0].MaxTokens.ShouldBeNull();
|
|
}
|
|
}
|