【免费下载链接】NodeToCode
Translate Unreal Engine Blueprints to C++ in seconds. Not hours.
NodeToCode 是一款 Unreal Engine 插件,能够借助 LLM 在几秒内将 Blueprint 图表翻译成干净的 C++ 代码(而不需要数小时的手工转换)。本文带你完整走一遍给 NodeToCode 添加新 LLM 提供商的开发流程:从继承服务基类UN2CBaseLLMService,到实现专属的响应解析器,最后注册到 Provider Registry。
理解 NodeToCode 的 LLM 提供商架构
在动手之前,先弄清楚插件的 LLM 模块由哪 4 个核心部分组成(位于 Source/Public/LLM/ 目录):
| 组件 | 文件 | 职责 |
|---|---|---|
| 服务接口 | IN2CLLMService.h | 定义所有提供商必须遵守的契约:初始化、发送请求、获取配置与请求头 |
| 服务基类 | N2CBaseLLMService.h | 封装通用流程:创建 HTTP 处理器、响应解析器、系统提示词管理器,并统一发起请求 |
| 响应解析器 | N2CResponseParserBase.h | 把提供商返回的原始 JSON 解析成统一的翻译结构体 |
| 提供商注册表 | N2CLLMProviderRegistry.h | 单例工厂,维护"提供商类型 → 服务类"的映射 |
基类的巧妙之处在于:Initialize()会自动完成组件组装(见 N2CBaseLLMService.cpp),而SendRequest()会调用你实现的FormatRequestPayload()构造请求体,再交给 HTTP 层发送(见 N2CBaseLLMService.cpp)。也就是说,你只需要实现几个虚函数钩子,其余流程全部复用。
第一步:在枚举中登记新的提供商类型
提供商类型集中定义在 N2CLLMTypes.h 的EN2CLLMProvider枚举中,目前包含 OpenAI、Anthropic、Gemini、Ollama、DeepSeek、LMStudio 六种。
在你的枚举末尾添加新项,例如MyProvider UMETA(DisplayName = "MyProvider")。这个枚举同时被设置面板、注册表和日志系统引用,是接入的"入口开关"。
如果新提供商有多款模型可选,还需要在 N2CLLMModels.h 中仿照EN2COpenAIModel的模式添加模型枚举,并用UMETA(DisplayName, Value)标注展示名和 API 中实际使用的模型 ID。
第二步:实现提供商服务类
这是接入的核心。在Source/Public/LLM/Providers/和Source/Private/LLM/Providers/下新建一对头文件/源文件,参考 N2COpenAIService.h 的写法,让你的服务类继承UN2CBaseLLMService:
UCLASS() class NODETOCODE_API UN2CMyProviderService : public UN2CBaseLLMService { GENERATED_BODY() public: virtual EN2CLLMProvider GetProviderType() const override { return EN2CLLMProvider::MyProvider; } virtual FString GetDefaultEndpoint() const override { return TEXT("https://api.myprovider.com/v1/chat"); } };需要覆盖的虚函数及其作用,可对照 N2CBaseLLMService.h 的钩子定义:
GetConfiguration():返回 API 端点、鉴权 Token 以及该提供商是否支持 system prompt,参考 N2COpenAIService.cpp;GetProviderHeaders():填充请求头,例如Authorization: Bearer <API Key>,参考 N2COpenAIService.cpp;FormatRequestPayload():把用户消息和系统提示词组装成该提供商的 JSON 请求体,推荐使用内置的UN2CLLMPayloadBuilder并配合UN2CSystemPromptManager处理不支持 system prompt 的模型(提示词自动合并),完整示例见 N2COpenAIService.cpp;CreateResponseParser():NewObject创建你在第三步实现的解析器。
第三步:实现响应解析器
每个提供商返回的 JSON 结构都不同(OpenAI 是choices[0].message.content,Anthropic 则是content数组),所以每个提供商都有专属解析器,位于Source/Public/LLM/Providers/。
以 N2COpenAIResponseParser.h 为模板,继承UN2CResponseParserBase并重写ParseLLMResponse()。基类已经提供了大量可复用的工具方法,你的实现只需三步(参考 N2COpenAIResponseParser.cpp):
- 反序列化提供商原始 JSON,若含
error字段则调用HandleCommonErrorResponse()记录错误; - 用
ExtractStandardMessageContent()按你提供商的字段路径提取出纯文本内容; - 把内容交给
Super::ParseLLMResponse()—— 基类会校验graphs结构并填充最终的FN2CTranslationResponse(见 N2CResponseParserBase.cpp)。
如果提供商还返回 token 用量(usage字段),顺手解析一下即可让界面显示费用统计。
第四步:注册到 Provider Registry 并接入设置
注册服务类:打开 N2CLLMModule.cpp 的InitializeProviderRegistry(),追加一行注册代码:
Registry->RegisterProvider(EN2CLLMProvider::MyProvider, UN2CMyProviderService::StaticClass());模块初始化时会通过注册表创建服务实例并调用Initialize()(见 N2CLLMModule.cpp),之后ProcessN2CJson()会自动拿到你的解析器处理返回结果,无需任何额外接线。
接入插件设置:最后一步是让新提供商出现在插件设置面板中。打开 N2CSettings.h,仿照其他提供商添加:模型选择下拉项(EN2CMyProviderModel)、API Key 输入框,并在GetActiveApiKey()/GetActiveModel()的 switch 分支中补上你的提供商。至此,用户在 Unreal 编辑器的插件设置中即可选择新提供商、填入 API Key 并选用模型。
验证清单:快速检查新 LLM 提供商是否接入成功
编译后按以下顺序逐项验证:
- 设置面板:插件设置中能看到新提供商和模型下拉项,API Key 可正常保存;
- 日志输出:触发一次翻译,日志中应出现
Registered provider class for provider type: MyProvider与Sending request to MyProvider using model: ...(均来自 N2CLLMModule.cpp 附近的日志点); - 解析结果:确认
ParseLLMResponse()成功返回graphs数组且编辑器窗口展示出代码、实现笔记等内容——解析失败时日志会提示Failed to parse LLM response; - 落盘归档:检查
Saved/NodeToCode/Translations下是否生成了本次翻译的 JSON 与代码文件(归档逻辑见 N2CLLMModule.cpp)。
总结
给 NodeToCode 添加 LLM 提供商本质上就是"枚举登记 → 继承基类实现 4 个虚函数 → 实现响应解析器 → 注册并接入设置"四步走。得益于UN2CBaseLLMService基类对 HTTP、提示词管理和错误处理的统一封装,新提供商的全部差异点都被收敛到了请求体构造和响应解析两处,这也是 N2COpenAIService.cpp 等现有提供商代码量如此之小的原因。照着 OpenAI 或 Ollama(本地免鉴权场景)任一现成实现对照修改,即可快速完成一个新提供商的接入。
【免费下载链接】NodeToCode
Translate Unreal Engine Blueprints to C++ in seconds. Not hours.
相关推荐
5分钟快速上手:KernelSU内核级root方案终极指南
5分钟快速上手:KernelSU内核级root方案终极指南 你是否厌倦了传统Android root方案的繁琐与不稳定?想要一个更安全、更高效的内核级root解
操作系统内核驱动系统编程移动开发node-DeepResearch的扩展开发:如何添加新的搜索提供商
node DeepResearch的扩展开发:如何添加新的搜索提供商 node DeepResearch是一个强大的AI研究工具,能够持续搜索、阅读网页并进行推
人工智能大模型AI Agent深度研究Open Canvas自定义模型配置完整指南:如何添加新的LLM提供商
Open Canvas自定义模型配置完整指南:如何添加新的LLM提供商 Open Canvas是一款开源的AI协作平台,专为聊天、内容创作和代码编写而设计,提供
AI 应用AI Agent交互助手前端后端
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考