104 lines
5.9 KiB
C#
104 lines
5.9 KiB
C#
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; }
|
||
}
|
||
}
|