(02)Unity使用在线AI大模型(调用Python)

目录

一、概要

二、改造Python代码

三、制作Unity场景


一、概要

查看本文需完成(01)Unity使用在线AI大模型(使用百度千帆服务)的阅读和实操,本文档接入指南的基础上使用Unity + C#调用百度千帆大模型,需要阅读者有一定的Unity开发基础。

此功能本质上就是拿Python大模型,大模型问答处理都是在Python中执行,而Unity只是在这个基础上包一层"壳"。那么就涉及到Unity该怎么去和Python进行通信的问题了,本文采用C#内的Process类,需要提前在Python代码内做可传入外部程序调用并传出参数方法,再将Python文件打包成.exe格式的文件。当然在Unity和Python通信的方面也可以用Socket的方式或者其他方式,不一定非要是Process哈~

先看达成效果:

二、改造Python代码

1.在上面提到,想要Python在外部被调用到需要先将Python源码做成可传入传出参数的方法,代码如下:

python 复制代码
import sys
import os
import qianfan
# 这两行必须存在,使传回到Unity的消息不会变成乱码
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

# 
os.environ["QIANFAN_ACCESS_KEY"] = "xx"
os.environ["QIANFAN_SECRET_KEY"] = "xx"

chat_comp = qianfan.ChatCompletion()
def qf(sendmessage):
    resp = chat_comp.do(model="ERNIE-Bot", messages=[{
        "role": "user",
        "content": str(sendmessage)
    }])
    return resp["result"]

s = str(qf(sys.argv[1]))
print(s)

2.接下来需要将Python代码打包成可执行的.exe文件,首先需要在PyCharm终端下载cx_Freeze依赖包,安装命令:pip install cx_Freeze

3.将Python代码打包为.exe文件,继续在终端内输入命令,命令:cxfreeze ++聊天/testtounity.py++ --target-dir dist

4.上述命令中标记下划线的 { ++聊天/testtounity.py++} 是你需要打包Python文件的相对路径

5.打包成功后这里会出现一个名为dist的文件夹

6.在磁盘中找到这个文件夹,找到已经打包为.exe文件的Python脚本,记住这个路径,待会要调用

三、制作Unity场景

1.在界面中创建输入框(InputField,用于发送消息的内容)、按钮(Button,用于点击发送事件)、面板(Panel+Text,用于显示对话记录)

2.新建C#代码页,粘贴以下代码:

python 复制代码
using System.Diagnostics;
using UnityEngine;
using UnityEngine.UI;
public class NewBehaviourScript : MonoBehaviour
{
    public InputField _InputField;
    public Button SendBtn;
    public Text ResultTxt;
    private static string resultMessage = string.Empty;
    private void Start()
    {
        SendBtn.onClick.AddListener(SendBtnFunc);
    }
    private void SendBtnFunc()
    {
        ResultTxt.text += "<color=yellow>" + "问题:" + _InputField.text + "</color>" + "\n";
        RunPythonScript(_InputField.text);
        ResultTxt.text += "<color=green>" + "回答:" + resultMessage + "</color>" + "\n";
    }
    private static void RunPythonScript(string argvs)
    {
        Process p = new Process();
        p.StartInfo.FileName = @"C:\Users\JuZ\PycharmProjects\pythonxuexi\dist\testtounity.exe";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.Arguments = argvs;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.RedirectStandardInput = true;
        p.StartInfo.CreateNoWindow = true;
        p.Start();
        p.BeginOutputReadLine();
        p.OutputDataReceived += new DataReceivedEventHandler(Get_data);
        p.WaitForExit();
    }
    private static void Get_data(object sender, DataReceivedEventArgs eventArgs)
    {
        if (!string.IsNullOrEmpty(eventArgs.Data))
        {
            resultMessage = string.Empty;
            resultMessage = eventArgs.Data;
        }
    }
}

3.修改代码页中下述的代码,将路径改为刚刚打包为.exe的Python脚本(本文档2-5)文件的绝对路径:p.StartInfo.FileName = @"++C:\Users\JuZ\PycharmProjects\pythonxuexi\dist\testtounity.exe++";

4.至此,运行Unity!

相关推荐
即兴小索奇43 分钟前
AI升级社区便民服务:AI办事小程序高效办证+应急系统秒响应,告别跑腿愁住得更安心
ai·商业·ai商业洞察·即兴小索奇
咕咚-萌西2 小时前
搭建一个简单的Agent
ai·agent
TDengine (老段)3 小时前
TDengine IDMP 应用场景:电动汽车
大数据·数据库·物联网·ai·时序数据库·iot·tdengine
郝学胜-神的一滴12 小时前
Horse3D游戏引擎研发笔记(七):在QtOpenGL环境下,使用改进的Uniform变量管理方式绘制多彩四边形
c++·3d·unity·游戏引擎·图形渲染·虚幻·unreal engine
即兴小索奇14 小时前
2025年AI Agent规模化落地:企业级市场年增超60%,重构商业作业流程新路径
人工智能·ai·商业·ai商业洞察·即兴小索奇
巨龙之路15 小时前
Unity的Cursor.lockState
unity·游戏引擎
★YUI★17 小时前
学习制作记录(选项UI以及存档系统)8.24
学习·游戏·ui·unity·c#
亲爱的程序猿20 小时前
2025 主流 BPM 系统 AI 融合实践全景:大模型适配、核心功能与特色解析
ai·bpm·流程管理软件
网络研究院21 小时前
AI代理需要数据完整性
人工智能·ai·数据·代理·完整性