您可以在方法的参数列表中添加一个额外的参数,用于传递m_DataList。修改后的代码如下所示:

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

/// <summary>
/// 调用接口
/// </summary>
/// <param name="_postWord"></param>
/// <param name="_callback"></param>
/// <param name="_dataList"></param>
/// <returns></returns>
public override IEnumerator Request(string _postWord, System.Action<string> _callback, List<SendData> _dataList)
{

    stopwatch.Restart();
    using (UnityWebRequest request = new UnityWebRequest(url, "POST"))
    {
        PostData _postData = new PostData
        {
            assistant_name = m_assistant_name,
            user_name = m_user_name,
            messages = new List<Message>()
            {
                new Message()
                {
                    role = "system",
                    content = "你扮演胡桃,是我的好朋友。"
                },
                new Message()
                {
                    role = "user",
                    content = "你好"
                },
                new Message()
                {
                    role = "assistant",
                    content = "旅行者,欢迎来到原神世界。"
                },
                new Message()
                {
                    role = "user",
                    content = "你好,我们来聊天吧。"
                },
                new Message()
                {
                    role = "assistant",
                    content = "好呀,user_name,我们聊点什么呢?。"
                },
                new Message()
                {
                    role = "user",
                    content = _postWord
                }
            },
            model = m_gptModel
        };

        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");

        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;
                //添加记录
                _dataList.Add(new SendData("assistant", _backMsg));
                _callback(_backMsg);
            }
        }

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

然后在调用PostMsg方法的地方,传入m_DataList作为参数:

PostMsg("您好", callback, m_DataList);

这样,您就可以在Request方法中使用传递的m_DataList参数了。

summary 发送消息 summary returnsreturns public override void PostMsgstring _msg Actionstring _callback basePostMsg_msg _callback; summary 调用接口 summary param n

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

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