namespace Dpz.Core.Service.Network.Models;
/// <summary>
/// Chat Completion 流式响应块
/// </summary>
public class StreamCompletionChunk
{
[JsonPropertyName("id")]
public string Id { get; set; } = string.Empty;
[JsonPropertyName("object")]
public string Object { get; set; } = string.Empty;
[JsonPropertyName("created")]
public long Created { get; set; }
[JsonPropertyName("model")]
public string Model { get; set; } = string.Empty;
[JsonPropertyName("provider")]
public string? Provider { get; set; }
[JsonPropertyName("choices")]
public List<StreamCompletionChoice> Choices { get; set; } = [];
[JsonPropertyName("usage")]
public Usage? Usage { get; set; }
}
/// <summary>
/// 流式响应中的选择项
/// </summary>
public class StreamCompletionChoice
{
[JsonPropertyName("index")]
public int Index { get; set; }
[JsonPropertyName("delta")]
public DeltaMessage Delta { get; set; } = new();
[JsonPropertyName("logprobs")]
public object? LogProbs { get; set; }
[JsonPropertyName("finish_reason")]
public string? FinishReason { get; set; }
[JsonPropertyName("native_finish_reason")]
public string? NativeFinishReason { get; set; }
}
/// <summary>
/// 流式响应中的增量消息
/// </summary>
public class DeltaMessage
{
[JsonPropertyName("role")]
public string? Role { get; set; }
[JsonPropertyName("content")]
public string? Content { get; set; }
[JsonPropertyName("reasoning")]
public string? Reasoning { get; set; }
[JsonPropertyName("reasoning_details")]
public List<ReasoningDetail>? ReasoningDetails { get; set; }
}
/// <summary>
/// 推理详情(用于Claude的思考功能)
/// </summary>
public class ReasoningDetail
{
[JsonPropertyName("type")]
public string Type { get; set; } = string.Empty;
[JsonPropertyName("data")]
public string Data { get; set; } = string.Empty;
[JsonPropertyName("id")]
public string? Id { get; set; }
[JsonPropertyName("format")]
public string? Format { get; set; }
[JsonPropertyName("index")]
public int? Index { get; set; }
}