Files
ChatBot/ChatBot/Models/Dto/OpenAiChatCompletion.cs
2025-10-15 18:25:26 +03:00

104 lines
5.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace ChatBot.Models.Dto
{
/// <summary>
/// Модель запроса завершения чата OpenAI
/// </summary>
[DataContract]
public class OpenAiChatCompletion
{
/// <summary>
/// Список сообщений, составляющих разговор на данный момент.
/// </summary>
[DataMember(Name = "messages")]
public List<ChatMessage> Messages { get; set; } = new List<ChatMessage>();
/// <summary>
/// Идентификатор модели для использования.
/// </summary>
[DataMember(Name = "model")]
public required string Model { get; set; }
/// <summary>
/// Число от -2.0 до 2.0. Положительные значения штрафуют новые токены на основе их существующей частоты в тексте, уменьшая вероятность того, что модель повторит ту же строку дословно.
/// </summary>
[DataMember(Name = "frequency_penalty")]
public double? FrequencyPenalty { get; set; }
/// <summary>
/// Изменить вероятность появления указанных токенов в завершении.
/// </summary>
[DataMember(Name = "logit_bias")]
public Dictionary<string, int> LogitBias { get; set; } = new Dictionary<string, int>();
/// <summary>
/// Максимальное количество токенов для генерации в завершении чата.
/// </summary>
[DataMember(Name = "max_tokens")]
public int? MaxTokens { get; set; }
/// <summary>
/// Сколько вариантов завершения чата генерировать для каждого входного сообщения.
/// </summary>
[DataMember(Name = "n")]
public int? N { get; set; }
/// <summary>
/// Число от -2.0 до 2.0. Положительные значения штрафуют новые токены на основе того, появлялись ли они в тексте, увеличивая вероятность того, что модель будет говорить о новых темах.
/// </summary>
[DataMember(Name = "presence_penalty")]
public double? PresencePenalty { get; set; }
/// <summary>
/// Объект, указывающий формат, который должна выводить модель.
/// </summary>
[DataMember(Name = "response_format")]
public ResponseFormat? ResponseFormat { get; set; }
/// <summary>
/// Эта функция находится в бета-версии. Если указано, наша система приложит максимальные усилия для детерминированной выборки, так что повторные запросы с одинаковым семенем и параметрами должны возвращать тот же результат. Детерминизм не гарантируется, и вы должны обращаться к параметру ответа system_fingerprint для мониторинга изменений в бэкенде.
/// </summary>
[DataMember(Name = "seed")]
public int? Seed { get; set; }
/// <summary>
/// До 4 последовательностей, на которых API остановит генерацию дальнейших токенов.
/// </summary>
[DataMember(Name = "stop")]
public object? Stop { get; set; }
/// <summary>
/// Какая температура выборки использовать, от 0 до 2. Более высокие значения, такие как 0.8, сделают вывод более случайным, а более низкие значения, такие как 0.2, сделают его более сфокусированным и детерминированным.
/// </summary>
[DataMember(Name = "temperature")]
public double? Temperature { get; set; }
/// <summary>
/// Альтернатива выборке с температурой, называемая ядерной выборкой, где модель рассматривает результаты токенов с вероятностной массой top_p. Так, 0.1 означает, что рассматриваются только токены, составляющие топ-10% вероятностной массы.
/// </summary>
[DataMember(Name = "top_p")]
public double? TopP { get; set; }
/// <summary>
/// Список инструментов, которые может вызывать модель. В настоящее время в качестве инструмента поддерживаются только функции.
/// </summary>
[DataMember(Name = "tools")]
public List<Tool> Tools { get; set; } = new List<Tool>();
/// <summary>
/// Управляет тем, какая (если есть) функция вызывается моделью.
/// </summary>
[DataMember(Name = "tool_choice")]
public object? ToolChoice { get; set; }
/// <summary>
/// Уникальный идентификатор, представляющий вашего конечного пользователя, который может помочь OpenAI мониторить и обнаруживать злоупотребления.
/// </summary>
[DataMember(Name = "user")]
public string? User { get; set; }
}
}