跳到主要内容

C# 用法

面向最终用户的 C# SDK 用法:装上、打开模型、反复推理、关闭。命名空间 Darra.AI.Runtime。

调用链​

一条链走到底:打开会话 → 反复推理 → 关闭。打开成本只付一次,之后每帧只调 InferImage,不要每张图重新打开。

步骤入口说明
打开AiSession.Open / OpenPlainOpen 开 .darmodel 加密包,OpenPlain 开明文模型
推理InferImage每次一张图,返回结果 JSON;同一会话反复调用
关闭Disposeusing 结束自动释放,重复 Dispose 安全

加密模型按激活码分流:TryOpen / Probe 问一次激活状态,NeedsCode 为真时向用户收一次激活码,调 TryActivate / Activate 后复用会话;推理阶段永不收码。AiException 只透传给应用,SDK 不弹窗,是否展示 Message 与 Hint 由应用决定。

前置依赖​

项目要求
目标框架net8.0
原生库nupkg 必须带 runtimes/win-x64/native/Core.dll;缺 native 只能编译引用,推理起不来
原生库路径可选环境变量 DARRA_AI_CORE_PATH 指向库文件或其所在目录
Provider由应用或 AI Studio 环境管理器事先部署;SDK 不下载不安装
进程x64
平台Windows x64 为交付重点;macOS 不在 v1

安装​

公共 NuGet 尚无此包。把收到的 Darra.AI.Runtime.1.0.0.nupkg 放进本地 packages 目录再装:

dotnet add package Darra.AI.Runtime --version 1.0.0 --source ./packages

或直接引用 DLL:从 下载 取 Darra.AI.Runtime.dll 与 Darra.AI.Runtime.xml,在 csproj 加 Reference 指向 DLL;XML 与 DLL 同目录可获得完整 IntelliSense。Core.dll 随应用一起交付。

快速开始​

using Darra.AI.Runtime;

using AiSession session = AiSession.OpenPlain("model.onnx", preferProvider: "onnx-cpu");
byte[] photo = File.ReadAllBytes("photo.jpg");
string json = session.InferImage(photo, ImageDesc.Auto());
Console.WriteLine(json);

加密模型:TryOpen 未激活时,用 TryActivate 或 Activate 收一次激活码再推理,之后每张图只调 InferImage。

按场景索引​

场景一句话能力
推理入门打开会话、推理一张图、关闭的最小调用链
视频连续推理相机逐帧进图,满队列丢最旧帧保最新画面
图片队列一次上百张进队列,容量与溢出策略由应用定
并行推理同模型多路并发,推理线程数独立可配
多模型并行多模型或多卡分槽,按 Weight 分并发槽份额

环境就绪与失败码见 Runtime 与 错误码。

设备池​

多张卡按每卡权重分活,不是插队。和同一张卡上的推理池不是一回事。 打开没成功:路径空抛 ArgumentException;文件不在、未激活、缺 Provider 抛 AiException;运行库缺符号是 EntryPointNotFoundException,库加载失败是 AiLoadException。不是关了再开。

AiDevicePool pool = AiDevicePool.OpenPlain("model.onnx");
ulong ticket = pool.Submit(photo, ImageDesc.Auto(), -1);
string json = pool.Wait(ticket);
pool.Dispose();