(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!

相关推荐
Thomas.Sir4 小时前
第一章:Agent智能体开发实战之【初步认识 LlamaIndex:从入门到实操】
人工智能·python·ai·检索增强·llama·llamaindex
数据知道4 小时前
claw-code 源码详细分析:Route / Bootstrap / Tool-Pool——把提示词映射到「可执行面」的分层策略
网络·ai·web·claude code
一见5 小时前
Sub-Agent 与 Agent Team 的本质区别
ai·subagent·agent team
杨浦老苏5 小时前
开源的AI编程工作站HolyClaude
人工智能·docker·ai·编辑器·开发·群晖
加油20196 小时前
软件工程师知识库搭建
ai·知识库·rag
ofoxcoding6 小时前
Grok 4.1 API 完全指南:性能实测、成本测算与接入方案(2026)
ai
gao_tjie8 小时前
Google Veo API:生成 AI 视频的全面指南
ai
Thomas.Sir8 小时前
第十三章:RAG知识库开发之【GraphRAG 从基础到实战】
python·ai·rag·graphrag
LoserChaser8 小时前
OpenClaw 指令大全:分类详解与使用指南
人工智能·ai·语言模型
TDengine (老段)8 小时前
TDengine IDMP 可视化 —— 面板
大数据·数据库·人工智能·物联网·ai·时序数据库·tdengine