Unity 中使用 RWKV-7b 模型设置多条 AI 设定

为了在 Unity 中使用 RWKV-7b 模型,并设置多条 AI 设定来定制模型的行为,您可以将 m_assistantSettingm_userSetting 设计为数组或列表类型。以下是修改后的代码:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class chatRWKV : LLM
{
    public chatRWKV()
    {
        url = "https://rwkv.ai-creator.net/chntuned/v1/chat/completions";
    }

    /// <summary>
    /// AI 设定
    /// </summary>
    public string m_SystemSetting = string.Empty;
    public List<string> m_assistantSetting = new List<string>();
    public List<string> m_userSetting = new List<string>();
    public string m_gptModel = "rwkv-world-7b";
    public string m_assistant_name = "胡桃";
    public string m_user_name = "旅行者";

    private void Start()
    {
        // 运行时,添加 AI 设定
        m_DataList.Add(new SendData("system", m_SystemSetting));
        for (int i = 0; i < m_assistantSetting.Count; i++)
        {
            m_DataList.Add(new SendData("assistant", m_assistantSetting[i]));
        }
        for (int i = 0; i < m_userSetting.Count; i++)
        {
            m_DataList.Add(new SendData("user", m_userSetting[i]));
        }
    }

    /// <summary>
    /// 发送消息
    /// </summary>
    /// <returns></returns>
    public override void PostMsg(string _msg, Action<string> _callback)
    {
        base.PostMsg(_msg, _callback);
    }

    /// <summary>
    /// 调用接口
    /// </summary>
    /// <param name="_postWord"></param>
    /// <param name="_callback"></param>
    /// <returns></returns>
    public override IEnumerator Request(string _postWord, System.Action<string> _callback)
    {
        stopwatch.Restart();
        using (UnityWebRequest request = new UnityWebRequest(url, "POST"))
        {
            PostData _postData = new PostData
            {
                model = m_gptModel,
                assistant_name = m_assistant_name,
                user_name = m_user_name,
                messages = m_DataList
            };

            string _jsonText = JsonUtility.ToJson(_postData);
            byte[] data = System.Text.Encoding.UTF8.GetBytes(_jsonText);
            request.uploadHandler = (UploadHandler)new UploadHandlerRaw(data);
            request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();

            request.SetRequestHeader("Content-Type", "application/json");
            //request.SetRequestHeader("Authorization", string.Format("Bearer {0}", api_key));

            yield return request.SendWebRequest();

            if (request.responseCode == 200)
            {
                string _msgBack = request.downloadHandler.text;
                MessageBack _textback = JsonUtility.FromJson<MessageBack>(_msgBack);
                if (_textback != null && _textback.choices.Count > 0)
                {

                    string _backMsg = _textback.choices[0].message.content;
                    // 添加记录
                    m_DataList.Add(new SendData("assistant", _backMsg));
                    _callback(_backMsg);
                }

            }


            Debug.Log("传参的值是:" + _jsonText);
            stopwatch.Stop();
            Debug.Log("RWKV 耗时:" + stopwatch.Elapsed.TotalSeconds);
        }
    }

    #region 数据包

    [Serializable]
    public class PostData
    {
        public string assistant_name;
        public string user_name;
        public List<SendData> messages;
        public string model;
    }


    [Serializable]
    public class MessageBack
    {
        public string id;
        public string created;
        public string model;
        public List<MessageBody> choices;
    }
    [Serializable]
    public class MessageBody
    {
        public Message message;
        public string finish_reason;
        public string index;
    }
    [Serializable]
    public class Message
    {
        public string role;
        public string content;
    }

    #endregion

}

在这个例子中,m_assistantSettingm_userSetting 被设计为 List<string> 类型,并且在 Start() 函数中按照循环的方式添加到 m_DataList 中。这样就可以根据需要添加任意数量的设定。


原文地址: https://www.cveoy.top/t/topic/coyT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录