namespace Dpz.Core.Service.Network.Models;
/// <summary>
/// Chat Completion 流式响应块
/// </summary>
[Obsolete("use IOpenAiService")]
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>
[Obsolete("use IOpenAiService")]
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>
[Obsolete("use IOpenAiService")]
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>
[Obsolete("use IOpenAiService")]
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; }
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
代码解释
这是一个用于处理 OpenAI Chat Completion 流式响应的数据模型文件,定义了一系列用于反序列化 JSON 响应的 C# 类。
主要组成部分:
1. StreamCompletionChunk (流式响应块)
表示流式响应中的一个数据块,包含:
Id: 响应的唯一标识符Object: 对象类型标识Created: Unix 时间戳Model: 使用的模型名称Provider: 服务提供商(可选)Choices: 响应选项列表Usage: Token 使用情况(可选)
2. StreamCompletionChoice (流式响应选择项)
表示每个响应块中的具体选择,包含:
Index: 选择项索引Delta: 增量消息内容(流式传输的核心)LogProbs: 日志概率信息(可选)FinishReason: 完成原因(如 "stop", "length" 等)NativeFinishReason: 原生完成原因(可选)
3. DeltaMessage (增量消息)
流式传输中的消息增量,包含:
Role: 角色(如 "assistant", "user")Content: 消息内容片段Reasoning: 推理过程(用于某些高级模型)ReasoningDetails: 详细推理信息列表
4. ReasoningDetail (推理详情)
特别为 Claude 等模型的思考功能设计,包含:
Type: 推理类型Data: 推理数据Id: 标识符(可选)Format: 格式说明(可选)Index: 索引(可选)
关键特性:
- 所有类都标记为
[Obsolete],建议使用IOpenAiService替代 - 使用
JsonPropertyName特性映射 JSON 字段名 - 支持流式响应的增量更新模式
- 兼容 OpenAI 和类似服务的 API 格式
使用场景:
用于处理 AI 对话流式响应,允许实时接收和显示 AI 生成的内容,而不需要等待完整响应。
AI 正在分析代码…
评论加载中...