Learn.VideoAnalysis/VideoAnalysisCore/AICore/ChatGPT/KIMI/MoonshotModel.cs

278 lines
8.3 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.

namespace VideoAnalysisCore.AICore.ChatGPT.KIMI
{
public class MessagesItem
{
public MessagesItem()
{
}
public MessagesItem(string content, string role = "user")
{
this.content = content;
this.role = role;
}
/// <summary>
///
/// </summary>
public string role { get; set; }
/// <summary>
///
/// </summary>
public string content { get; set; }
}
/// <summary>
/// chat请求参数
/// </summary>
public class ChatReq
{
/// <summary>
/// 使用的模型
/// <para>例如[ moonshot-v1-8k ]</para>
/// </summary>
public string model { get; set; } = "moonshot-v1-8k";
/// <summary>
/// 消息主体
/// </summary>
public List<MessagesItem> messages { get; set; }
/// <summary>
/// 使用什么采样温度,介于 0 和 1 之间。较高的值(如 0.7)将使输出更加随机,而较低的值(如 0.2)将使其更加集中和确定性
/// <para>默认为 0如果设置值域须为 [0, 1] 我们推荐 0.3,以达到较合适的效果</para>
/// </summary>
public double temperature { get; set; }
/// <summary>
/// 聊天完成时生成的最大 token 数。如果到生成了最大 token 数个结果仍然没有结束finish reason 会是 "length", 否则会是 "stop"
/// <para>这个值建议按需给个合理的值,如果不给的话,我们会给一个不错的整数比如 1024。特别要注意的是这个 max_tokens 是指您期待我们返回的 token 长度,而不是输入 + 输出的总长度。比如对一个 moonshot-v1-8k 模型,它的最大输入 + 输出总长度是 8192当输入 messages 总长度为 4096 的时候,您最多只能设置为 4096否则我们服务会返回不合法的输入参数 invalid_request_error ),并拒绝回答。如果您希望获得“输入的精确 token 数”,可以使用下面的“计算 Token” API 使用我们的计算器获得计数</para>
/// </summary>
public int? max_tokens { get; set; }
/// <summary>
/// 另一种采样方法,即模型考虑概率质量为 top_p 的标记的结果。因此0.1 意味着只考虑概率质量最高的 10% 的标记。一般情况下,我们建议改变这一点或温度,但不建议 同时改变
/// </summary>
public float? top_p { get; set; } = 1.0f;
/// <summary>
/// 为每条输入消息生成多少个结果
/// <para>默认为 1不得大于 5。特别的当 temperature 非常小靠近 0 的时候,我们只能返回 1 个结果,如果这个时候 n 已经设置并且 > 1我们的服务会返回不合法的输入参数(invalid_request_error)</para>
/// </summary>
public int? n { get; set; } = 1;
/// <summary>
/// 存在惩罚,介于-2.0到2.0之间的数字。正值会根据新生成的词汇是否出现在文本中来进行惩罚,增加模型讨论新话题的可能性
/// <para>默认为 0</para>
/// </summary>
public float? presence_penalty { get; set; } = 0;
/// <summary>
/// 频率惩罚,介于-2.0到2.0之间的数字。正值会根据新生成的词汇在文本中现有的频率来进行惩罚,减少模型一字不差重复同样话语的可能性
/// <para>默认为 0</para>
/// </summary>
public float? frequency_penalty { get; set; } = 0;
/// <summary>
/// 停止词,当全匹配这个(组)词后会停止输出,这个(组)词本身不会输出。最多不能超过 5 个字符串,每个字符串不得超过 32 字节
/// <para>默认 null</para>
/// </summary>
public List<string>? stop { get; set; }
/// <summary>
/// 是否流式返回
/// <para>false</para>
/// </summary>
public bool stream { get; set; } = false;
}
public class PermissionItem
{
/// <summary>
///
/// </summary>
public int created { get; set; }
/// <summary>
///
/// </summary>
public string id { get; set; }
/// <summary>
///
/// </summary>
public string @object { get; set; }
/// <summary>
///
/// </summary>
public string allow_create_engine { get; set; }
/// <summary>
///
/// </summary>
public string allow_sampling { get; set; }
/// <summary>
///
/// </summary>
public string allow_logprobs { get; set; }
/// <summary>
///
/// </summary>
public string allow_search_indices { get; set; }
/// <summary>
///
/// </summary>
public string allow_view { get; set; }
/// <summary>
///
/// </summary>
public string allow_fine_tuning { get; set; }
/// <summary>
///
/// </summary>
public string organization { get; set; }
/// <summary>
///
/// </summary>
public string @group { get; set; }
/// <summary>
///
/// </summary>
public string is_blocking { get; set; }
}
public class ModelInfo
{
/// <summary>
///
/// </summary>
public int created { get; set; }
/// <summary>
///
/// </summary>
public string id { get; set; }
/// <summary>
///
/// </summary>
public string @object { get; set; }
/// <summary>
///
/// </summary>
public string owned_by { get; set; }
/// <summary>
///
/// </summary>
public List<PermissionItem> permission { get; set; }
/// <summary>
///
/// </summary>
public string root { get; set; }
/// <summary>
///
/// </summary>
public string parent { get; set; }
}
public class ModelListResp
{
/// <summary>
///
/// </summary>
public string @object { get; set; }
/// <summary>
///
/// </summary>
public List<ModelInfo> data { get; set; }
}
public class FileListResp
{
/// <summary>
///
/// </summary>
public string @object { get; set; }
/// <summary>
///
/// </summary>
public List<FileItem> data { get; set; }
}
public class FileContent
{
/// <summary>
///
/// </summary>
public string content { get; set; }
/// <summary>
///
/// </summary>
public string file_type { get; set; }
/// <summary>
///
/// </summary>
public string filename { get; set; }
/// <summary>
///
/// </summary>
public string title { get; set; }
/// <summary>
///
/// </summary>
public string type { get; set; }
}
public class FileItem
{
/// <summary>
///
/// </summary>
public string id { get; set; }
/// <summary>
///
/// </summary>
public string @object { get; set; }
/// <summary>
///
/// </summary>
public int bytes { get; set; }
/// <summary>
///
/// </summary>
public int created_at { get; set; }
/// <summary>
///
/// </summary>
public string filename { get; set; }
/// <summary>
///
/// </summary>
public string purpose { get; set; }
/// <summary>
///
/// </summary>
public string status { get; set; }
/// <summary>
///
/// </summary>
public string status_details { get; set; }
}
public class ErrorMsg
{
/// <summary>
///
/// </summary>
public string message { get; set; }
/// <summary>
///
/// </summary>
public string type { get; set; }
}
public class ErrorResponse
{
/// <summary>
///
/// </summary>
public ErrorMsg error { get; set; }
}
}