
openai-dotnet
官方 .NET 库,几行代码接入 OpenAI 各类接口
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-10-26 · 当前星标 ★ 2716
使用教程
ℹ 本教程由 AI 依据该项目 README 整理,个别步骤可能需要按你的环境微调。
环境要求
- 安装 .NET SDK(README 示例使用 .NET 10,库兼容 .NET Standard 2.0)
- 一个可编译的 .NET 项目
- 能够访问 NuGet 包源以安装 OpenAI 包
- 了解 C# 异步编程与 await foreach 基本用法
安装与启动步骤
-
1准备 .NET 环境
安装 .NET SDK 并准备一个可编译的 .NET 项目,README 示例使用 .NET 10,库兼容 .NET Standard 2.0。
-
2安装 NuGet 包
在 .NET 项目目录执行安装命令,把 OpenAI 客户端库加入项目依赖。
dotnet add package OpenAI -
3注册依赖注入
在 Program.cs 中调用 AddChatClient,传入配置节名;客户端线程安全,可注册为单例。
builder.AddChatClient("Clients:ChatClient"); -
4注入并调用客户端
在控制器构造函数注入 ChatClient,调用 CompleteChatAsync 并读取 Content[0].Text。
ChatCompletion completion = await _chatClient.CompleteChatAsync(message); -
5启用流式输出
改用 CompleteChatStreamingAsync,用 await foreach 枚举更新并输出 ContentUpdate。
AsyncCollectionResultcompletionUpdates = client.CompleteChatStreamingAsync("Say 'this is a test.'"); -
6处理工具调用
用 CreateFunctionTool 定义工具并加入 Tools,FinishReason 为 ToolCalls 时回传结果。
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
Clients:ChatClient | 是 | 依赖注入注册时传入的配置节名,用于读取客户端配置 | "Clients:ChatClient" |
ChatCompletionOptions.Tools | 否 | 聊天补全请求的工具列表,用于函数调用 | Tools = { getCurrentLocationTool, getCurrentWeatherTool } |
如何确认成功
在应用中调用 CompleteChatAsync,若返回 completion.Content[0].Text 且有内容,说明客户端已正常工作。
常见问题
Q:这个库支持哪些 .NET 版本?
A:兼容所有 .NET Standard 2.0 应用;README 示例使用 .NET 10,部分语法依赖较新语言特性。
Q:客户端可以注册为单例吗?
A:可以,OpenAI 客户端线程安全,注册为 singleton 可提高资源效率和 HTTP 连接复用。
Q:如何实现逐字输出?
A:使用 CompleteChatStreaming 或 CompleteChatStreamingAsync,枚举 StreamingChatCompletionUpdate 并输出 ContentUpdate。
Q:FinishReason 为 ToolCalls 时怎么办?
A:先执行对应工具函数,把结果作为 ChatRequestToolMessage 加入消息,再次调用 CompleteChat。
注意事项
- 安装命令需在 .NET 项目目录执行,确保项目文件存在。
- README 未给出 API 密钥配置与客户端初始化完整示例,请按库的配置体系自行设置。
- 流式结果必须枚举后才会处理分片,不要只创建对象不遍历。
- 工具调用需要循环处理,直到 FinishReason 为 Stop。
核心亮点
- OpenAI 官方维护,接口定义与 API 更新保持同步,类型准确
- 强类型模型覆盖对话、嵌入、图像、语音、文件等主要能力
- 原生支持流式响应与异步调用,便于做逐字输出和并发场景
不足之处
- 仅覆盖 OpenAI 官方接口,切换其他兼容服务需自行改配置
- 部分新特性上线后文档与示例更新存在滞后
- 社区规模相对 Python 生态较小,中文资料有限
适用场景
- ASP.NET Core 后端集成对话补全与嵌入检索
- 桌面或命令行工具中调用图像生成与语音转写
- 企业内部知识库问答服务的流式输出实现
替代项目
openai-python、semantic-kernel、langchain
上一篇:openai-python
下一篇:openai-go
同类项目推荐
ChainForge
开源
拖拽节点,批量测试提示词,多模型效果一目了然
An open-source visual programming environment for battle-testing prompts to LLMs.
keras_cv_attention_models
开源
一站式加载 Keras 主流视觉模型,快速做分类检测分割
Keras beit,caformer,CMT,CoAtNet,convnext,davit,dino,efficientdet,edgenext,efficientf···
predikit
开源
让 LLM 智能体直接调用你的 ML 模型做预测
The missing bridge between your ML models and your AI agents.
sd-api
开源
用 TypeScript 优雅调用 Stable Diffusion WebUI,快速集成图像生成能力
A Typescript API client for AUTOMATIC111/stable-diffusion-webui
jaicf-kotlin
开源
用 Kotlin 一套代码搞定 Alexa 和 Google 助手对话
Kotlin framework for conversational voice assistants and chatbots development
nlp.js
开源
用 JavaScript 快速构建能理解意图的聊天机器人
An NLP library for building bots, with entity extraction, sentiment analysis, automa···
megabots
开源
不想从零写代码?几分钟搭好一个能用的 LLM 聊天机器人。
State-of-the-art, production ready LLM apps made mega-easy, so you don't have to bui···
oasf
开源
给 AI Agent 定统一数据契约,跨框架对接不再靠猜
Open Agentic Schema Framework
dspy-go
开源
用 Go 声明式编排 LLM 工作流,自动优化提示词
DSPy Go implementation