使用说明
使用示例:
MCP示例:
Claude生成场景对象并控制其变换和材质,生成蓝图、函数、变量,添加组件,运行python脚本等。
API示例:
一个名为“成为人类”的项目,其中NPC是OpenAI代理实例。使用此插件构建。
虚幻引擎生成AI支持插件:
每个月,各种组织都会发布数百种新的人工智能模型,这使得很难跟上最新的进展。
“虚幻引擎生成AI支持插件”允许您专注于游戏开发,而无需担心LLM/GenAI集成层。
目前正在为中国大陆和国际市场提供阿里巴巴Qwen等中国LLMs支持。
该项目旨在为各种尖端的LLM/GenAI模型构建一个长期支持(LTS)插件,并培养 它目前包括OpenAI的GPT-4o、Deepseek R1、Claude Sonnet 4、Claude Opus 4和用于虚幻引擎5.1或更高版本的GPT-40-mini,并计划添加 实时API、Gemini、MCP和Grok 3 API即将推出。该插件将专门关注对以下方面有用的API 游戏开发、评估和互动体验。欢迎提出建议和意见。该插件还可以用于设置新的评估和比较游戏战场中模型的方法。
当前进展:
此插件将继续获得最新功能和型号的更新。欢迎捐款。 如果您想要一个更适合生产的替代品,具有更多功能和有保证的稳定性,请查看 Gen AI Pro 和 Gen AI Pro中国 插件,因为它花费了大量的API信用,让我测试不同的模型,每个功能和每个引擎版本,以确保一切工作良好和兼容。这两个插件共同支持来自全球的150多个AI模型!否则,我觉得这个免费插件对于许多用例(包括开头显示的示例)来说已经足够好了,你可以永远免费使用它。
LLM/GenAI API支持:
- OpenAI API支持:
- OpenAI聊天API✅
gpt-5.1🛠️gpt-5✅,gpt-4.1,gpt-4.1-mini,gpt-4.1-nano,o4-mini,o3,o3-pro,o3-mini模型✅
- OpenAI DALL-E API (专业版可用) ☑️
- 响应API🛠️
- OpenAI Vision API (专业版可用) ☑️
- OpenAI实时API
gpt-realtime,gpt-realtime-mini模型 (专业版可用) ☑️
- OpenAI结构化输出✅
- OpenAI Whisper和TTS API (专业版可用) ☑️
- 多模式API支持 (专业版可用) ☑️
- 文本和音频流 (专业版可用) ☑️
- OpenAI聊天API✅
- Anthropic Claude API支持:
- Claude chat API✅
claude-4.5-latest🛠️claude-4-latest,claude-3-7-sonnet-latest,claude-3-5-sonnet,claude-3-5-haiku-latest,claude-3-opus-latest模型✅
- 多模式/视觉API支持 (专业版可用) ☑️
- Claude chat API✅
- XAI(Grok 3)API支持:
- Google Gemini API支持:
- ElevenLabs:
- Meta AI API支持:❌
- Ollama本地人工智能:可在此处获取: 麻省理工学院(MIT)
- 支持Openai等本地LLM
gpt-oss,阿里巴巴qwen3-vl等等 麻省理工学院(MIT)
- 支持Openai等本地LLM
- 推理聚合器:
- OpenRouter、Groq、Ollama等 (专业版可用) ☑️
- 深度搜索API支持:
- 深度搜索聊天API✅
deepseek-chat(DeepSeek-V3.1)型号✅
- 深度搜索推理API,R1✅
deepseek-reasoning-r1模型✅
- 深度搜索聊天API✅
- 阿里巴巴(Dashscope):
qwen3-max,qwen-plus,qwen-turbo-2025-04-28等等 (可在“gen ai pro china”中获取) ☑️ 🇨🇳- 多模式API支持,如
qwen-omni-turbo等等 (可在“gen ai pro china”中获取) ☑️ 🇨🇳 - 图像生成API,如
qwen-image(可在“gen ai pro china”中获取) ☑️ 🇨🇳 - 文本转语音,如
qwen3-tts-flash,qwen-tts(可在“gen ai pro china”中获取) ☑️ 🇨🇳
- 登月AI:
- Moonshot Chat API,比如
kimi-k2-0905-preview(可在“gen ai pro china”中获取) ☑️ 🇨🇳 - 多模式聊天API,如
moonshot-v1-8k-vision-preview(可在“gen ai pro china”中获取) ☑️ 🇨🇳
- Moonshot Chat API,比如
- 延期:
skylark-pro-250415,deepseek-r1-250528等等 (可在“gen ai pro china”中获取) ☑️ 🇨🇳- 多模式API支持 (可在“gen ai pro china”中获取) ☑️ 🇨🇳
- 图像生成API,如
seedream-4-0-250828(可在“gen ai pro china”中获取) ☑️ 🇨🇳
- 3D生成模型API:
- TripoSR by StabilityAI🚧
- 插件示例项目🛠️ 这里
- 版本控制支持
- 性能支持🛠️
- Git子模块支持✅
- 轻量级插件(内置)
- 无外部依赖关系✅
- 构建标志以启用/禁用API🚧
- 从构建中排除MCP✅
- 测试
- 自动化测试 (专业版可用) ☑️ 和 (可在“gen ai pro china”中获取) ☑️ 🇨🇳
- 不同的平台 (专业版可用) ☑️ 和 (可在“gen ai pro china”中获取) ☑️ 🇨🇳
- 不同的发动机版本 (专业版可用) ☑️ 和 (可在“gen ai pro china”中获取) ☑️ 🇨🇳
虚幻MCP(模型控制协议):
- 客户支持✅
- Claude桌面应用程序支持✅
- 游标IDE支持✅
- OpenAI运营商API支持🚧
- 蓝图汽车生成🛠️
- 创建新的类型蓝图✅
- 添加新函数、函数/蓝图变量✅
- 添加节点和连接🛠️ (有问题,问题未解决)
- 高级蓝图生成🛠️
- LLM的级别/场景控制🛠️
- 生成物体和形状✅
- 移动、旋转和缩放对象✅
- 更改材质和颜色✅
- 高级场景功能🛠️
- 生成型人工智能:
- 提示获取和生成3D模型🛠️
- 控制:
- 能够运行Python脚本✅
- 能够运行控制台命令✅
- UI:
- 小部件生成🛠️
- UI蓝图生成🛠️
- 项目文件:
- 创建/编辑项目文件/文件夹️✅
- 删除现有项目文件❌
- 其他:
- 项目清理🛠️
哪里,
- ✅ - 完成
- ☑️ - GenAI Pro中提供
- ☑️ 🇨🇳 - 在“GenAI Pro China”中可用
- 🛠️ - 进行中
- 🚧 - 计划的
- 🤝 - 需要贡献者
- ❌ - 暂时不支持
目录
设置API密钥:
[!注意]
不需要设置API密钥来测试Claude应用程序中的MCP功能。只有Claude API需要使用无烟煤钥匙。
对于编辑:
设置环境变量 PS_<ORGNAME> 到您的API密钥。
对于Windows:
setx PS_<ORGNAME> "your api key"
对于Linux/MacOS:
-
在终端中运行以下命令,将您的密钥替换为API密钥。
echo "export PS_<ORGNAME>='yourkey'" >> ~/.zshrc -
使用新变量更新shell:
source ~/.zshrc
PS:设置环境变量后,不要忘记重新启动编辑器和连接的IDE。
哪里 <ORGNAME> 可以是:
PS_OPENAIAPIKEY, PS_DEEPSEEKAPIKEY, PS_ANTHROPICAPIKEY, PS_METAAPIKEY, PS_GOOGLEAPIKEY 等等
对于打包构建:
将API密钥存储在打包的构建中是一个安全风险。以下是OpenAI API文档对它的描述:
“在浏览器或移动应用程序等客户端环境中暴露您的OpenAI API密钥会让恶意用户获取该密钥并代表您提出请求,这可能会导致意外收费或某些帐户数据泄露。请求应始终通过您自己的后端服务器进行路由,在那里您可以确保API密钥的安全。”
阅读更多 这里.
对于测试构建,您可以调用 GenSecureKey::SetGenAIApiKeyRuntime 使用打包构建中的API键,使用c++或blueprint函数。
设置MCP:
[!注意]
如果您的项目只使用LLM API而不使用MCP,则可以跳过本节。
[!小心]
Discalimer:如果你使用的是插件的MCP功能,它将直接让Claude Desktop App控制你的虚幻引擎项目。 确保您了解安全风险,并且只在受控环境中使用它。请在使用MCP功能之前备份您的项目,并使用版本控制来跟踪更改。
1.安装以下任一客户端:
2.设置mcp配置json:
对于Claude桌面应用程序:
claude_desktop_config.json Claude Desktop App安装目录中的文件。(可能会问克劳德,你的平台在哪里!)
文件看起来像这样:
{
"mcpServers": {
"unreal-handshake": {
"command": "python",
"args": ["<your_project_directoy_path>/Plugins/GenerativeAISupport/Content/Python/mcp_server.py"],
"env": {
"UNREAL_HOST": "localhost",
"UNREAL_PORT": "9877"
}
}
}
}
对于游标IDE:
.cursor/mcp.json 项目目录中的文件。文件看起来像这样:
{
"mcpServers": {
"unreal-handshake": {
"command": "python",
"args": ["<your_project_directoy_path>/Plugins/GenerativeAISupport/Content/Python/mcp_server.py"],
"env": {
"UNREAL_HOST": "localhost",
"UNREAL_PORT": "9877"
}
}
}
}
3.使用pip或cv从安装MCP[CLI]。
pip install mcp[cli]
4.在虚幻引擎中启用python插件。(编辑->插件->Python编辑器脚本插件)
5.[可选]在编辑器打开时启用AutoStart MCP服务器
将插件添加到您的项目中:
使用Git:
-
将插件库作为子模块添加到项目的存储库中。
git submodule add https://github.com/prajwalshettydev/UnrealGenAISupport Plugins/GenerativeAISupport -
重新生成项目文件: 右键单击.uproject文件,然后选择“生成Visual Studio项目文件”。
-
在虚幻编辑器中启用插件: 在虚幻编辑器中打开您的项目。转到编辑>插件。在列表中搜索插件并启用它。
-
对于虚幻C++项目,将插件的模块包含在项目的Build.cs文件中:
PrivateDependencyModuleNames.AddRange(new string[] { "GenerativeAISupport" });
使用Perforce:
仍在开发中。.
使用虚幻市场:
即将在虚幻引擎市场免费推出。
获取最新插件更改:
使用Git:
您可以通过以下方式获取最新更改:
cd Plugins/GenerativeAISupport
git pull origin main
或者更新项目中的所有子模块:
git submodule update --recursive --remote
使用Perforce:
仍在开发中。.
用途:
有一个示例虚幻项目已经实现了该插件。你可以找到它 这里.
OpenAI:
目前该插件支持OpenAI API的聊天和结构化输出。既适用于C++,也适用于蓝图。
测试模型为 gpt-4o, gpt-4o-mini, gpt-4.5, o1-mini, o1, o3-mini-high.
1.聊天:
C++示例:
void SomeDebugSubsystem::CallGPT(const FString& Prompt,
const TFunction<void(const FString&, const FString&, bool)>& Callback)
{
FGenChatSettings ChatSettings;
ChatSettings.Model = TEXT("gpt-4o-mini");
ChatSettings.MaxTokens = 500;
ChatSettings.Messages.Add(FGenChatMessage{ TEXT("system"), Prompt });
FOnChatCompletionResponse OnComplete = FOnChatCompletionResponse::CreateLambda(
[Callback](const FString& Response, const FString& ErrorMessage, bool bSuccess)
{
Callback(Response, ErrorMessage, bSuccess);
});
UGenOAIChat::SendChatRequest(ChatSettings, OnComplete);
}
蓝图示例:
2.结构化输出:
C++示例1:
将自定义模式json直接发送到函数调用
FString MySchemaJson = R"({
"type": "object",
"properties": {
"count": {
"type": "integer",
"description": "The total number of users."
},
"users": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string", "description": "The user's name." },
"heading_to": { "type": "string", "description": "The user's destination." }
},
"required": ["name", "role", "age", "heading_to"]
}
}
},
"required": ["count", "users"]
})";
UGenAISchemaService::RequestStructuredOutput(
TEXT("Generate a list of users and their details"),
MySchemaJson,
[](const FString& Response, const FString& Error, bool Success) {
if (Success)
{
UE_LOG(LogTemp, Log, TEXT("Structured Output: %s"), *Response);
}
else
{
UE_LOG(LogTemp, Error, TEXT("Error: %s"), *Error);
}
}
);
C++示例2:
从文件发送自定义模式json
#include "Misc/FileHelper.h"
#include "Misc/Paths.h"
FString SchemaFilePath = FPaths::Combine(
FPaths::ProjectDir(),
TEXT("Source/:ProjectName/Public/AIPrompts/SomeSchema.json")
);
FString MySchemaJson;
if (FFileHelper::LoadFileToString(MySchemaJson, *SchemaFilePath))
{
UGenAISchemaService::RequestStructuredOutput(
TEXT("Generate a list of users and their details"),
MySchemaJson,
[](const FString& Response, const FString& Error, bool Success) {
if (Success)
{
UE_LOG(LogTemp, Log, TEXT("Structured Output: %s"), *Response);
}
else
{
UE_LOG(LogTemp, Error, TEXT("Error: %s"), *Error);
}
}
);
}
蓝图示例:
DeepSeek API:
目前该插件支持DeepSeek API的聊天和推理。既适用于C++,也适用于蓝图。 注意事项:
- 系统消息目前对推理模型是强制性的。API似乎返回null
- 此外,在文档中:“请注意,如果输入消息序列中包含reasoning_content字段,API将返回400错误。 阅读更多 这里"
[!警告]
在使用R1推理模型时,确保虚幻引擎的HTTP超时不是30秒的默认值。 因为这些API调用可能需要30秒以上的时间才能响应。只需设置HttpRequest->SetTimeout(<N Seconds>);还不够 因此,需要将以下行添加到您的项目中DefaultEngine.ini文件:[HTTP] HttpConnectionTimeout=180 HttpReceiveTimeout=180
1.聊天和推理:
C++示例:
FGenDSeekChatSettings ReasoningSettings;
ReasoningSettings.Model = EDeepSeekModels::Reasoner; // or EDeepSeekModels::Chat for Chat API
ReasoningSettings.MaxTokens = 100;
ReasoningSettings.Messages.Add(FGenChatMessage{TEXT("system"), TEXT("You are a helpful assistant.")});
ReasoningSettings.Messages.Add(FGenChatMessage{TEXT("user"), TEXT("9.11 and 9.8, which is greater?")});
ReasoningSettings.bStreamResponse = false;
UGenDSeekChat::SendChatRequest(
ReasoningSettings,
FOnDSeekChatCompletionResponse::CreateLambda(
[this](const FString& Response, const FString& ErrorMessage, bool bSuccess)
{
if (!UTHelper::IsContextStillValid(this))
{
return;
}
// Log response details regardless of success
UE_LOG(LogTemp, Warning, TEXT("DeepSeek Reasoning Response Received - Success: %d"), bSuccess);
UE_LOG(LogTemp, Warning, TEXT("Response: %s"), *Response);
if (!ErrorMessage.IsEmpty())
{
UE_LOG(LogTemp, Error, TEXT("Error Message: %s"), *ErrorMessage);
}
})
);
蓝图示例:
无烟煤API:
目前该插件支持来自Anthropic API的聊天。既适用于C++,也适用于蓝图。
测试模型为 claude-sonnet-4-20250514, claude-opus-4-20250514, claude-3-7-sonnet-latest, claude-3-5-sonnet, claude-3-5-haiku-latest, claude-3-opus-latest.
1.聊天:
C++示例:
// ---- Claude Chat Test ----
FGenClaudeChatSettings ChatSettings;
ChatSettings.Model = EClaudeModels::Claude_3_7_Sonnet; // Use Claude 3.7 Sonnet model
ChatSettings.MaxTokens = 4096;
ChatSettings.Temperature = 0.7f;
ChatSettings.Messages.Add(FGenChatMessage{TEXT("system"), TEXT("You are a helpful assistant.")});
ChatSettings.Messages.Add(FGenChatMessage{TEXT("user"), TEXT("What is the capital of France?")});
UGenClaudeChat::SendChatRequest(
ChatSettings,
FOnClaudeChatCompletionResponse::CreateLambda(
[this](const FString& Response, const FString& ErrorMessage, bool bSuccess)
{
if (!UTHelper::IsContextStillValid(this))
{
return;
}
if (bSuccess)
{
UE_LOG(LogTemp, Warning, TEXT("Claude Chat Response: %s"), *Response);
}
else
{
UE_LOG(LogTemp, Error, TEXT("Claude Chat Error: %s"), *ErrorMessage);
}
})
);
蓝图示例:
XAI的Grok 3 API:
目前该插件支持来自XAI的Grok 3 API的聊天。既适用于C++,也适用于蓝图。
1.聊天:
FGenXAIChatSettings ChatSettings;
ChatSettings.Model = TEXT("grok-3-latest");
ChatSettings.Messages.Add(FGenXAIMessage{
TEXT("system"),
TEXT("You are a helpful AI assistant for a game. Please provide concise responses.")
});
ChatSettings.Messages.Add(FGenXAIMessage{TEXT("user"), TEXT("Create a brief description for a forest level in a fantasy game")});
ChatSettings.MaxTokens = 1000;
UGenXAIChat::SendChatRequest(
ChatSettings,
FOnXAIChatCompletionResponse::CreateLambda(
[this](const FString& Response, const FString& ErrorMessage, bool bSuccess)
{
if (!UTHelper::IsContextStillValid(this))
{
return;
}
UE_LOG(LogTemp, Warning, TEXT("XAI Chat response: %s"), *Response);
if (!bSuccess)
{
UE_LOG(LogTemp, Error, TEXT("XAI Chat error: %s"), *ErrorMessage);
}
})
);
模型控制协议(MCP):
这项工作目前正在进行中。该插件支持各种客户端,如Claude Desktop App、Cursor等。
用途:
如果启用了自动启动MCP服务器:(在插件的设置中)
1.打开虚幻引擎编辑器。
2.打开克劳德桌面应用程序或Cursor IDE或Windsor。
就是这样!现在,您可以使用该插件的MCP功能。
如果禁用自动启动MCP服务器:
1.从插件的python目录运行MCP服务器。
python <your_project_directoy>/Plugins/GenerativeAISupport/Content/Python/mcp_server.py
2.通过打开或重新启动Claude桌面应用程序或Cursor IDE来运行MCP客户端。
3.打开一个新的虚幻引擎项目,并从插件的python目录运行以下python脚本。
工具->运行Python脚本->选择
Plugins/GenerativeAISupport/Content/Python/unreal_socket_server.py文件。
4.现在,您应该能够提示Claude桌面应用程序使用虚幻引擎。
已知问题:
- 节点无法与MCP正确连接
- MCP不支持撤消重做
- Deepseek推理模型不支持流媒体
- 创建材质工具不支持复杂的材质生成
- 运行一些llm生成的有效python脚本时出现问题
- 当LLM编译蓝图时,其响应中没有适当的错误处理
- 生成某些节点的问题,尤其是使用getter和setter时
- 在编辑场景和项目文件时,不会打开正确的上下文窗口。
- 无法在蓝图编辑器中正确停靠窗口。
配置窗口:
(仍然wip)
贡献指南:
为发展而设立:
- 安装
unrealpython包,并设置IDE的python解释器以实现适当的智能感知。
pip install unreal
更多细节将很快添加。
项目结构:
更多细节将很快添加。
参考文献
- 环境变量集逻辑 发件人: KellanM的OpenAI Api虚幻
- MCP服务器灵感 发件人: ahujasid的混合机MCP
快速链接:
支持这个项目
如果你觉得UnrealGenAISupport有帮助,可以考虑赞助我继续这个项目!点击上面的“赞助商”按钮进行贡献。
