Health/Assets/_VoiceAssistant/AIChatTookit/Scripts/LLM/LLM.cs

88 lines
2.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.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.Contracts;
using UnityEngine;
public class LLM:MonoBehaviour
{
/// <summary>
/// api地址
/// </summary>
[SerializeField] protected string url;
/// <summary>
/// 提示词,与消息一起发送
/// </summary>
[Header("发送的提示词设定")]
[SerializeField] protected string m_Prompt = string.Empty;
/// <summary>
/// 语言
/// </summary
[Header("设置回复的语言")]
[SerializeField] protected string lan="中文";
/// <summary>
/// 上下文保留条数
/// </summary>
[Header("上下文保留条数")]
[SerializeField] protected int m_HistoryKeepCount = 15;
/// <summary>
/// 缓存对话
/// </summary>
[SerializeField] public List<SendData> m_DataList = new List<SendData>();
/// <summary>
/// 计算方法调用的时间
/// </summary>
[SerializeField] protected Stopwatch stopwatch=new Stopwatch();
/// <summary>
/// 发送消息
/// </summary>
public virtual void PostMsg(string _msg,Action<string> _callback) {
//上下文条数设置
CheckHistory();
//提示词处理
string message =
m_Prompt +
" The language of reply is " + lan +
" here's my question:" + _msg;
UnityEngine.Debug.Log("玩家post" + message);
//缓存发送的信息列表
m_DataList.Add(new SendData("user", message));
StartCoroutine(Request(message, _callback));
}
public virtual IEnumerator Request(string _postWord, System.Action<string> _callback)
{
yield return new WaitForEndOfFrame();
}
/// <summary>
/// 设置保留的上下文条数,防止太长
/// </summary>
public virtual void CheckHistory()
{
if(m_DataList.Count> m_HistoryKeepCount)
{
m_DataList.RemoveAt(0);
}
}
[Serializable]
public class SendData
{
[SerializeField] public string role;
[SerializeField] public string content;
public SendData() { }
public SendData(string _role, string _content)
{
role = _role;
content = _content;
}
}
}