🚀 OpenVINO™ C# API 3.3 全新发布!正式接入 OpenVINO GenAI,C# 本地大模型开发全面启航!
📖 前言
本文简介
本文是 OpenVINO™ C# API 3.3 的新版本发布文章,重点介绍 3.3 相比 3.2 的核心升级:正式接入 OpenVINO GenAI,让 C#/.NET 项目可以直接调用本地 LLM、Whisper 和 VLM 能力。
这不是一篇完整教程。后续系列文章会分别展开文本生成、Whisper 语音识别、视觉语言问答、GenAI runtime 包选择和老项目迁移。本文的目标是先把 3.3 的版本价值、能力边界和升级方向讲清楚,让读者快速判断:这个版本为什么值得关注,适合解决什么问题,应该从哪一篇文章继续读下去。
为什么升级到 3.3?
OpenVINO C# API 3.2 主要解决的是:C# 如何稳定、完整地调用 OpenVINO 做传统推理。到了 3.3,项目继续保留这条主线,同时把能力边界向 GenAI 扩展。
3.3 的升级重点可以概括为:
- 正式接入 OpenVINO GenAI :新增
OpenVinoSharp.GenAI命名空间,开始覆盖 LLM、Whisper、VLM 等生成式 AI pipeline。 - C# 直接调用本地大模型:不再必须绕 Python 服务,也不需要把模型推理拆到外部脚本中。
- GenAI runtime NuGet 化 :通过
JYPPX.OpenVINO.GenAI.runtime.*管理 native runtime,减少手动拷 DLL 的部署成本。 - 传统推理保持稳定 :只使用
Core、Model、CompiledModel、InferRequest的老项目,不会强制加载 GenAI runtime。 - 示例和文章同步补齐 :新增
samples/GenAI,并提供文本生成、Whisper、VLM 三类可复现实战文章。 - 全目标框架继续覆盖 :从
net46到net10.0,兼顾老项目和新项目。
适用读者
| 读者类型 | 阅读重点 | 预期收益 |
|---|---|---|
| 3.2 老用户 | 是否兼容、是否必须安装 GenAI runtime | 判断升级风险和迁移路径 |
| C# AI 开发者 | LLM、Whisper、VLM 如何进入 .NET 项目 | 快速了解 3.3 的新能力 |
| 桌面/工业软件开发者 | 离线部署、runtime 管理、本地推理 | 评估是否能接入现有业务 |
| 技术负责人 | 包支持平台、示例完整度、后续教程 | 判断技术选型和落地成本 |
| 新用户 | 项目定位、NuGet 安装、示例入口 | 建立对 OpenVINO C# API 的整体认知 |
阅读建议
- 想快速了解版本价值,先看【一句话总结】和【核心亮点抢先看】。
- 想知道新增了哪些功能,重点看【3.3 核心亮点详解】。
- 已经在使用 3.2,重点看【老项目是否需要担心】和后续迁移文章。
- 想立即运行示例,可以从本文的 TinyLlama 快速体验开始,再阅读第 2 篇文本生成教程。
🌟 核心亮点抢先看
text
┌─────────────────────────────────────────────────────────────────────────────┐
│ OpenVINO™ C# API 3.3 核心亮点 │
├─────────────────────────────────────────────────────────────────────────────┤
│ 🚀 GenAI 正式接入 新增 OpenVinoSharp.GenAI,C# 直接调用本地生成式 AI │
│ 🧠 LLM 文本生成 支持 Greedy、Beam Search、Sampling、Streaming、Chat │
│ 🎙 Whisper 语音识别 支持本地 WAV 转写、语言设置和时间戳分段 │
│ 🖼 VLM 图文问答 支持图片 Tensor + Prompt 的视觉语言模型调用 │
│ 📦 Runtime NuGet GenAI runtime 平台包发布,减少手动部署 native DLL │
│ 🧩 老项目友好 传统推理不强制加载 GenAI runtime,可按需升级 │
│ 🎯 全框架覆盖 net46 到 net10.0,兼顾 .NET Framework 与现代 .NET │
└─────────────────────────────────────────────────────────────────────────────┘
📢 写在前面:C# 本地大模型开发,终于可以更自然了
在很多真实项目里,C# 仍然是主力工程语言:桌面软件、工业上位机、视觉检测系统、企业内网工具、ASP.NET Core 服务、边缘设备应用,都大量运行在 .NET 生态里。
过去,当这些项目想接入大模型能力时,常见做法是:
- C# 程序调用 Python 服务;
- 通过命令行脚本间接运行模型;
- 把推理逻辑拆到另一个进程;
- 或者手动封装 native DLL,自己处理依赖加载。
这些方案能用,但工程成本不低。服务部署、进程通信、模型路径、运行时依赖、日志排错、版本锁定,都会变成额外工作。
OpenVINO C# API 3.3 的目标,就是让 C# 开发者可以用更贴近 .NET 工程习惯的方式使用 OpenVINO GenAI。
text
C# 应用代码
↓
OpenVinoSharp.GenAI
↓
OpenVINO GenAI runtime
↓
本地 LLM / Whisper / VLM 模型
你仍然写 C#,仍然通过 NuGet 管理包,仍然用 using 管理资源,只是在 3.3 中,文本生成、语音识别、图文问答这些 GenAI 能力开始进入同一个 API 体系。
🎯 一句话总结
text
OpenVINO C# API 3.3
= 3.2 的稳定传统推理能力
+ OpenVINO GenAI 托管封装
+ GenAI runtime NuGet 平台包
+ LLM / Whisper / VLM 示例工程
+ 面向 C# 开发者的完整教程系列
如果说 3.2 是一次"传统推理能力的全栈强化",那么 3.3 就是一次"从传统推理走向本地 GenAI 应用"的关键升级。
📊 3.2 与 3.3 对比一览
| 能力维度 | OpenVINO C# API 3.2 | OpenVINO C# API 3.3 | 升级价值 |
|---|---|---|---|
| 项目定位 | 传统 OpenVINO 推理封装 | 核心推理 + GenAI 能力入口 | ⭐⭐⭐⭐⭐ |
| GenAI 支持 | 未系统覆盖 | 新增 OpenVinoSharp.GenAI |
⭐⭐⭐⭐⭐ |
| LLM 文本生成 | 无完整 C# 示例 | Greedy、Beam、Sampling、Streaming、Chat | ⭐⭐⭐⭐⭐ |
| Whisper 语音识别 | 未覆盖 | 新增 Whisper pipeline 示例 | ⭐⭐⭐⭐ |
| VLM 图文问答 | 未覆盖 | 新增图片 + 文本 prompt 示例 | ⭐⭐⭐⭐ |
| runtime 管理 | 基础 OpenVINO.runtime.* |
新增 JYPPX.OpenVINO.GenAI.runtime.* |
⭐⭐⭐⭐⭐ |
| 老项目兼容 | 支持传统推理 | 传统推理继续稳定,GenAI 按需启用 | ⭐⭐⭐⭐⭐ |
| 示例体系 | YOLO 等传统示例 | 新增 samples/GenAI 示例树 |
⭐⭐⭐⭐⭐ |
| 文档教程 | 安装、API、传统案例 | 增加 GenAI 系列实战文章 | ⭐⭐⭐⭐⭐ |
| 目标框架 | 覆盖 .NET Framework 与现代 .NET | 继续覆盖 net46 到 net10.0 |
⭐⭐⭐⭐⭐ |
✨ 3.3 核心亮点详解
1️⃣ 正式接入 OpenVINO GenAI:C# 不再只是传统推理入口
3.3 新增了 OpenVinoSharp.GenAI 命名空间,把 OpenVINO GenAI C API 的核心能力封装成 C# 类型。
主要新增类型包括:
| 类 | 作用 |
|---|---|
GenAI |
GenAI runtime 初始化与可用性检查 |
GenerationConfig |
文本生成配置 |
LLMPipeline |
LLM 文本生成 pipeline |
DecodedResults |
文本生成结果 |
PerformanceMetrics |
性能指标 |
WhisperPipeline |
Whisper 语音识别 pipeline |
WhisperGenerationConfig |
Whisper 生成配置 |
WhisperDecodedResults |
Whisper 识别结果 |
VLMPipeline |
视觉语言模型 pipeline |
VLMDecodedResults |
VLM 输出结果 |
最小文本生成代码大致如下:
csharp
using OpenVinoSharp.GenAI;
using GenerationConfig config = new();
config.SetMaxNewTokens(64);
using LLMPipeline pipeline = new(modelDir, "CPU");
using DecodedResults results = pipeline.Generate("What is OpenVINO?", config);
Console.WriteLine(results.GetText());
这段代码展示了 3.3 最核心的体验:C# 对象 + NuGet runtime + 本地模型目录 + using 资源管理。
后续第 2 篇文章会专门展开 LLM 文本生成,包括 Greedy、Beam Search、Multinomial Sampling、Streaming 和 Chat。
2️⃣ LLM 文本生成:从 smoke test 到聊天应用的基础能力
3.3 新增的文本生成示例覆盖多个典型场景:
| 示例 | 场景 |
|---|---|
Greedy |
稳定、确定性的文本生成,适合 smoke test |
BeamSearch |
多候选路径搜索,适合更稳定的生成任务 |
Multinomial |
temperature、top-p、top-k 采样,适合开放式输出 |
Streaming |
逐 token 输出,适合聊天窗口和长文本生成 |
Chat |
支持交互式输入和 --turn 脚本化对话 |
Benchmark |
输出 TTFT、TPOT、吞吐等性能指标 |
其中 Chat 示例已经加入中文 prompt 验证路径,适合自动化测试:
powershell
dotnet run --project samples/GenAI/TextGeneration/Chat/Chat.csproj --framework net8.0 -- `
--model E:\LlmModel\TinyLlama-1.1B-Chat-v1.0-int4-ov `
--device CPU `
--turn "请用中文列出三个 OpenVINO 关键词。"
需要注意的是,C# 编码链路能正确传递中文,并不代表所有模型都有稳定中文能力。TinyLlama 适合作为轻量验证模型;正式中文应用建议选择中文或多语能力更强的 OpenVINO 模型。
3️⃣ Whisper 语音识别:本地音频转写进入 .NET 应用
3.3 新增 WhisperPipeline 示例,演示如何在 C# 中加载 OpenVINO 格式 Whisper 模型,把 16 kHz mono WAV 转成文本,并输出时间戳分段。
典型调用流程:
csharp
float[] samples = WavFile.ReadMonoFloat(audio, 16000);
using WhisperPipeline pipeline = new(model, device);
using WhisperGenerationConfig config = pipeline.GetGenerationConfig();
config.SetLanguage("<|en|>");
config.SetTask("transcribe");
config.SetReturnTimestamps(true);
using WhisperDecodedResults results = pipeline.Generate(samples, config);
Console.WriteLine(results.GetString());
这个能力适合:
- 离线语音识别;
- 会议音频预处理;
- 桌面软件语音输入;
- 工业现场本地转写;
- 内网环境下不出网的语音文本化。
第 3 篇文章会详细讲模型准备、音频转换、WAV 读取、timestamp chunks 和常见错误。
4️⃣ VLM 视觉语言问答:图片 + Prompt 的多模态入口
3.3 也新增了 VLM 示例,用 C# 把图片加载成 OpenVINO Tensor,再和文本 prompt 一起送入 VLMPipeline。
核心代码大致如下:
csharp
using Tensor imageTensor = ImageTensorLoader.LoadRgbTensor(image);
using GenerationConfig config = GenAISample.CreateTextConfig(maxNewTokens);
using VLMPipeline pipeline = new(model, device);
using VLMDecodedResults results = pipeline.Generate(
prompt,
new[] { imageTensor },
config);
Console.WriteLine(results.GetText());
这个方向可以扩展到:
- 图片内容描述;
- 工业检测结果解释;
- 文档截图理解;
- 设备状态问答;
- 本地多模态助手。
第 4 篇文章会进一步讲图片 Tensor、RGB BMP/PPM 输入、中文 VLM prompt 和交互式问答。
5️⃣ GenAI Runtime NuGet:部署不再靠手动拷 DLL
OpenVINO GenAI 不是只有一个 openvino_genai_c.dll。一个正常运行的 GenAI 应用,还需要 OpenVINO core runtime、tokenizers、plugins、frontends、TBB 等 native 依赖。
3.3 对使用者最直接的改进是:GenAI runtime 可以通过平台 NuGet 包引入。
Windows GenAI 项目示例:
xml
<ItemGroup>
<PackageReference Include="JYPPX.OpenVINO.CSharp.API" Version="3.3.0" />
<PackageReference Include="JYPPX.OpenVINO.GenAI.runtime.win" Version="2026.2.0" />
</ItemGroup>
当前 2026.2.0 GenAI runtime 包覆盖:
| 平台 | GenAI runtime 包 |
|---|---|
| Windows x64 | JYPPX.OpenVINO.GenAI.runtime.win |
| Ubuntu 24 x64 | JYPPX.OpenVINO.GenAI.runtime.ubuntu.24-x86_64 |
| Ubuntu 22 x64 | JYPPX.OpenVINO.GenAI.runtime.ubuntu.22-x86_64 |
| Ubuntu 22 ARM64 | JYPPX.OpenVINO.GenAI.runtime.ubuntu.22-arm64 |
| RHEL 8 x64 | JYPPX.OpenVINO.GenAI.runtime.rhel8-x86_64 |
| macOS ARM64 | JYPPX.OpenVINO.GenAI.runtime.macos-arm64 |
如果项目需要 GenAI,通常使用对应平台的 JYPPX.OpenVINO.GenAI.runtime.* 即可。GenAI runtime 包已经包含 GenAI 所需的 OpenVINO native 依赖,不建议在同一个项目里再同时引用基础 OpenVINO.runtime.* 包。
第 5 篇文章会专门讲:平台包怎么选、必要 DLL 有哪些、常见加载错误怎么排查。
6️⃣ 老项目友好:传统推理不被 GenAI 绑架
3.3 不是一次"强制所有项目接入 GenAI"的升级。
如果你的项目只使用传统 OpenVINO 推理,例如:
CoreModelTensorCompiledModelInferRequest
那么仍然可以只安装基础 runtime:
xml
<ItemGroup>
<PackageReference Include="JYPPX.OpenVINO.CSharp.API" Version="3.3.0" />
<PackageReference Include="OpenVINO.runtime.win" Version="2026.2.0" />
</ItemGroup>
只有当项目调用 OpenVinoSharp.GenAI 下的 API 时,才需要切换到对应平台的 GenAI runtime 包。
这对 3.2 老用户很关键:你可以先升级 API 包,验证原有推理路径稳定,再决定是否引入 GenAI。
7️⃣ 全框架覆盖:从 .NET Framework 4.6 到 .NET 10.0
JYPPX.OpenVINO.CSharp.API 3.3.0 同时打包以下目标框架:
text
net46
net461
net462
net47
net471
net472
net48
net481
netcoreapp3.1
net5.0
net6.0
net7.0
net8.0
net9.0
net10.0
这意味着:
- 老的 .NET Framework 桌面项目可以继续升级;
- 新项目可以直接使用 .NET 8、.NET 9、.NET 10;
- 同一套 API 包可以覆盖更多企业项目和边缘部署场景。
🧪 示例体系:新增 samples/GenAI
3.3 新增完整的 GenAI 示例目录:
text
samples/GenAI
├── Common
├── TextGeneration
│ ├── Greedy
│ ├── BeamSearch
│ ├── Multinomial
│ ├── Streaming
│ ├── Chat
│ └── Benchmark
├── WhisperSpeechRecognition
├── VisualLanguageChat
├── README.md
├── RUNBOOK.md
└── RunAllSamples.ps1
这些示例不是空壳 demo,而是配套了:
- 公共参数解析;
- runtime 可用性检查;
- WAV 读取;
- BMP/PPM 图片 Tensor 加载;
- 性能指标打印;
- 批量验证脚本;
- 中文 prompt 自动化验证。
本地完整验证脚本会依次运行 LLM、Chat、Whisper、VLM 等多个场景,并保存日志,便于文章复现和 CI 验证。
⚡ 快速体验:TinyLlama 文本生成
准备模型路径:
powershell
cd E:\GitSpace\OpenVINO-CSharp-API-csharp3.3\OpenVINO-CSharp-API
$modelRoot = "E:\LlmModel"
$llm = Join-Path $modelRoot "TinyLlama-1.1B-Chat-v1.0-int4-ov"
运行 Greedy 示例:
powershell
dotnet run --project samples/GenAI/TextGeneration/Greedy/Greedy.csproj --framework net8.0 -- `
--model $llm `
--device CPU `
--prompt "What is OpenVINO?" `
--max-new-tokens 24
本机实测输出:
示例会输出生成文本和性能指标,包括 load time、TTFT、TPOT、throughput 等,方便后续做设备对比、版本验证和参数调优。
🎯 适合哪些项目关注?
OpenVINO C# API 3.3 尤其适合这些方向:
- C# 桌面 AI 助手;
- 工业视觉系统中的本地文本解释;
- 离线语音识别工具;
- 内网知识库前端;
- 本地多模态问答应用;
- 需要固定 runtime 版本的企业级部署;
- 已经使用 OpenVINO C# API 3.2 的老项目。
如果你的项目本来就在 .NET 生态中,又希望把本地 AI 能力接进来,3.3 会比"C# 调 Python 服务"更接近工程化方案。
⚠️ 已知说明
当前阶段仍有一些需要说明的地方:
- GenAI runtime 多平台包依赖上游 OpenVINO GenAI 官方发布物情况。
- VLM 输出对模型、图片和 runtime 组合更敏感,正式演示建议使用语义明确的真实图片。
- RAG、图像生成、视频生成等 pipeline 尚未作为 C# 示例加入。
- 传统核心推理仍保持主线能力,GenAI 不会强制影响传统项目。
这些内容会在后续 runtime 使用指南和迁移文章中展开。
🚀 总结:从传统推理封装,迈向 .NET 本地 AI 工具箱
OpenVINO C# API 3.3 的价值,可以概括为三点:
- 它把 OpenVINO GenAI 正式带进 C#/.NET 生态。
- 它让 LLM、Whisper、VLM 有了可运行、可教学、可迁移的示例工程。
- 它通过可选 runtime 设计,让 3.2 老项目可以平滑升级。
从 3.2 到 3.3,OpenVINO C# API 不再只是传统推理封装,而是在向完整的 .NET 本地 AI 工具箱 演进。
下一篇,我们从最容易跑通、最适合展示的场景开始:用 C# 调用 TinyLlama,完成第一个 OpenVINO GenAI 文本生成示例。
📚 更多资源
| 资源 | 链接 |
|---|---|
| 📖 完整文档 | https://guojin-yan.github.io/OpenVINO-CSharp-API |
| 💻 示例代码 | https://github.com/guojin-yan/OpenVINO-CSharp-API/tree/csharp3.3/samples |
| 📦 NuGet 包 | https://www.nuget.org/packages/JYPPX.OpenVINO.CSharp.API |
| 🐛 问题反馈 | https://github.com/guojin-yan/OpenVINO-CSharp-API/issues |
| 💬 技术交流 | QQ群:945057948 |
📢软件声明
1. 开源协议声明
作者所有开源项目代码均遵循 Apache License 2.0 开源协议。
特别说明:本项目集成了若干第三方库。若任何第三方库的许可协议与 Apache 2.0 协议存在冲突或不一致,均以该第三方库的原始许可协议为准。本项目不包含也不代表这些第三方库的授权声明,使用前请务必阅读并遵守第三方库的相关许可。
2. 代码开发与质量说明
- AI 辅助开发:本代码在开发过程中使用了人工智能(AI)辅助生成与优化,并非完全由人工逐行编写。
- 安全性承诺 :作者郑重声明,本代码中绝无任何有意设置的后门、病毒、木马或旨在破坏用户设备、窃取数据的恶意代码。
- 技术局限性:受限于作者个人的技术水平与能力,代码中可能存在因逻辑不严谨、优化不足或经验欠缺导致的低级问题(例如但不限于内存泄漏、偶发崩溃、资源未释放等)。这些问题纯属能力不足所致,并非主观故意。
- 测试范围:由于作者精力有限,未对本软件进行全方位、覆盖所有边缘场景的完整测试。
3. 免责声明(重要)
请在将本代码应用于任何实际项目(特别是商业、工业或关键任务环境)之前,务必进行详尽、严格的自行测试与验证。 鉴于上述可能存在的代码缺陷及测试覆盖不足,因使用本代码而导致的任何直接或间接损失(包括但不限于设备故障、数据丢失、系统瘫痪或利润损失等),本作者概不负责。 一旦您开始使用本代码,即表示您已知晓上述风险并同意自行承担一切后果,相关问题与本作者无关。
4. 代码开源范围
本项目承诺核心逻辑代码完全开源,但上述提到的"第三方库"的二进制文件、源代码或相关资源不在本项目的开源义务范围内,请根据其各自的指引获取。
5. 社区与反馈
尽管存在上述不足,我们仍欢迎大家下载使用、提交 Issue 或参与测试,共同完善项目。如果您在使用过程中发现 Bug、内存溢出或有改进建议,欢迎通过项目主页提供的联系方式与作者取得联系,我们将尽力在有限的时间内提供协助。
Copyright © 2026 Guojin Yan. All Rights Reserved.