[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-betalgo--openai":3,"tool-betalgo--openai":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",143909,2,"2026-04-07T11:33:18",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107888,"2026-04-06T11:32:50",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":10,"last_commit_at":59,"category_tags":60,"status":17},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,"2026-04-06T11:19:32",[35,15,13,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":77,"owner_twitter":77,"owner_website":78,"owner_url":79,"languages":80,"stars":89,"forks":90,"last_commit_at":91,"license":92,"difficulty_score":32,"env_os":93,"env_gpu":94,"env_ram":94,"env_deps":95,"category_tags":103,"github_topics":105,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":117,"updated_at":118,"faqs":119,"releases":148},5262,"betalgo\u002Fopenai","openai",".NET library for the OpenAI service API by Betalgo Ranul","openai 是由 Betalgo Ranul 维护的一款社区驱动的 .NET 类库，旨在帮助开发者轻松地将 OpenAI 的强大能力集成到 .NET 应用程序中。它封装了访问 OpenAI 服务 API 的复杂细节，让程序员无需从零开始编写底层网络请求代码，即可快速调用大语言模型、图像生成等核心功能。\n\n对于使用 C# 和 .NET 生态的软件开发人员而言，openai 解决了手动对接官方 API 时繁琐的认证、数据序列化及错误处理问题，显著提升了开发效率。该工具特别适合 .NET 后端工程师、全栈开发者以及希望在自己的应用中嵌入 AI 功能的技术团队。\n\n其技术亮点包括对依赖注入（Dependency Injection）的原生支持，方便在 ASP.NET Core 等现代架构中无缝集成；同时提供了独立的实验性工具库以扩展功能。值得注意的是，项目近期更新了包命名空间（从 `Betalgo.OpenAI` 迁移至 `Betalgo.Ranul.OpenAI`），并持续跟进官方新特性，如实时音频 API（Realtime API）。此外，仓库内附带了详细的示例项目（OpenAI.Pla","openai 是由 Betalgo Ranul 维护的一款社区驱动的 .NET 类库，旨在帮助开发者轻松地将 OpenAI 的强大能力集成到 .NET 应用程序中。它封装了访问 OpenAI 服务 API 的复杂细节，让程序员无需从零开始编写底层网络请求代码，即可快速调用大语言模型、图像生成等核心功能。\n\n对于使用 C# 和 .NET 生态的软件开发人员而言，openai 解决了手动对接官方 API 时繁琐的认证、数据序列化及错误处理问题，显著提升了开发效率。该工具特别适合 .NET 后端工程师、全栈开发者以及希望在自己的应用中嵌入 AI 功能的技术团队。\n\n其技术亮点包括对依赖注入（Dependency Injection）的原生支持，方便在 ASP.NET Core 等现代架构中无缝集成；同时提供了独立的实验性工具库以扩展功能。值得注意的是，项目近期更新了包命名空间（从 `Betalgo.OpenAI` 迁移至 `Betalgo.Ranul.OpenAI`），并持续跟进官方新特性，如实时音频 API（Realtime API）。此外，仓库内附带了详细的示例项目（OpenAI.Playground）和完善的文档，帮助用户快速上手，但建议在使用示例时注意隔离测试环境，以防误操作影响生产数据。","![Betalgo Ranul OpenAI Github readme banner](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbetalgo_openai_readme_6163b79016c8.png)\n\n## Overview\nA .NET Library for accessing OpenAI's API, provided as a community library. This Library allows you to integrate OpenAI's capabilities into your .NET applications with ease.\n\n⭐ We appreciate your star, it helps! ![GitHub Repo stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fbetalgo\u002Fopenai)  \n #### Community Links\n- [![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1250841506785529916?label=Discord)](https:\u002F\u002Fdiscord.gg\u002FgfgHsWnGxy) Please come and help us build the .NET AI community  \n- [![Static Badge](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReddit-Betalgo%20Developers-orange)](https:\u002F\u002Fwww.reddit.com\u002Fr\u002FBetalgoDevelopers)\n- [![Static Badge](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGithub-Discussions-black)](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fdiscussions)\n \n### Install Packages\n#### Core Library\n⚠️ We now have new PackageId and new Namespace. ⚠️  \n⚠️ `Betalgo.OpenAI` is now `Betalgo.Ranul.OpenAI` ⚠️  \n\n[![Betalgo.Ranul.OpenAI](https:\u002F\u002Fimg.shields.io\u002Fnuget\u002Fv\u002FBetalgo.Ranul.OpenAI?style=for-the-badge)](https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FBetalgo.Ranul.OpenAI\u002F)\n```shell\nInstall-Package Betalgo.Ranul.OpenAI\n```\n\n#### Experimental Utilities Library\n[![Betalgo.OpenAI.Utilities](https:\u002F\u002Fimg.shields.io\u002Fnuget\u002Fv\u002FBetalgo.OpenAI.Utilities?style=for-the-badge)](https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FBetalgo.OpenAI.Utilities\u002F)\n```shell\nInstall-Package Betalgo.OpenAI.Utilities\n```\n\n## Documentation and Links\n- [Realtime API](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002Frealtime) ✨NEW\n- [Wiki Page](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki)\n- [Feature Availability Table](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FFeature-Availability)\n- [Change Logs](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FChange-Logs)\n- [Migration Guide for Breaking Changes](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FMigration-Guides-for-breaking-changes)\n- [Contracts Upgrade Guide (9.2.0)](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FContracts-Project:-Introduction-and-Upgrade-Guide)\n---\n\n## Acknowledgements\nMaintenance of this project is made possible by all the bug reporters, [contributors](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fgraphs\u002Fcontributors), and [sponsors](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fkayhantolga).\n\n💖 Sponsors:  \n[@betalgo](https:\u002F\u002Fgithub.com\u002Fbetalgo), [Laser Cat Eyes](https:\u002F\u002Flasercateyes.com\u002F)   \n[@tylerje](https:\u002F\u002Fgithub.com\u002Ftylerje), [@oferavnery](https:\u002F\u002Fgithub.com\u002Foferavnery), [@MayDay-wpf](https:\u002F\u002Fgithub.com\u002FMayDay-wpf), [@AnukarOP](https:\u002F\u002Fgithub.com\u002FAnukarOP), [@Removable](https:\u002F\u002Fgithub.com\u002FRemovable), [@Scar11](https:\u002F\u002Fgithub.com\u002FScar11)\n\n---\n\n## Sample Usage\nThe repository contains a sample project named **OpenAI.Playground** to help you understand how the library works. However, please exercise caution while experimenting, as some test methods may result in unintended consequences such as file deletion or fine-tuning.\n\n*!! It is highly recommended that you use a separate account instead of your primary account while using the playground. Some test methods may add or delete your files and models, potentially causing unwanted issues. !!*\n\nYour API Key can be obtained from here: https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Fapi-keys  \nYour Organization ID can be found here: https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Forg-settings\n\n### Without Using Dependency Injection\n```csharp\nvar openAIService = new OpenAIService(new OpenAIOptions()\n{\n    ApiKey = Environment.GetEnvironmentVariable(\"MY_OPEN_AI_API_KEY\")\n});\n```\n\n### Using Dependency Injection\n\n#### secrets.json\n```json\n\"OpenAIServiceOptions\": {\n    \"ApiKey\": \"Your api key goes here\",\n    \"Organization\": \"Your Organization Id goes here (optional)\",\n    \"UseBeta\": \"true\u002Ffalse (optional)\"\n}\n```\n*(To use [user secrets](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Faspnet\u002Fcore\u002Fsecurity\u002Fapp-secrets?view=aspnetcore-6.0&tabs=windows): Right-click your project name in \"Solution Explorer\", then click \"Manage User Secrets\". This is a good way to keep your API keys secure.)*\n\n#### Program.cs\n```csharp\nserviceCollection.AddOpenAIService();\n```\n\n**OR**\n\n```csharp\nserviceCollection.AddOpenAIService(settings => { settings.ApiKey = Environment.GetEnvironmentVariable(\"MY_OPEN_AI_API_KEY\"); });\n```\n\nAfter injecting your service, you can retrieve it from the service provider:\n```csharp\nvar openAiService = serviceProvider.GetRequiredService\u003CIOpenAIService>();\n```\n\nYou can set a default model (optional):\n```csharp\nopenAiService.SetDefaultModelId(Models.Gpt_4o);\n```\n\n## Chat GPT Sample\n```csharp\nvar completionResult = await openAiService.ChatCompletion.CreateCompletion(new ChatCompletionCreateRequest\n{\n    Messages = new List\u003CChatMessage>\n    {\n        ChatMessage.FromSystem(\"You are a helpful assistant.\"),\n        ChatMessage.FromUser(\"Who won the world series in 2020?\"),\n        ChatMessage.FromAssistant(\"The Los Angeles Dodgers won the World Series in 2020.\"),\n        ChatMessage.FromUser(\"Where was it played?\")\n    },\n    Model = Models.Gpt_4o,\n});\nif (completionResult.Successful)\n{\n    Console.WriteLine(completionResult.Choices.First().Message.Content);\n}\n```\n\n---\n## Notes\nDue to time constraints, not all methods have been thoroughly tested or fully documented. If you encounter any issues, please report them or submit a pull request. Your contributions are always appreciated.\n\nNeedless to say, I cannot accept responsibility for any damage caused by using the library.\n\n## Changelog\n### 9.2.4\n- Fixed function tool schema generation so parameters always emit a JSON Schema `type: \"object\"` and avoid `invalid_function_parameters` errors like `schema must be a JSON Schema of 'type: \"object\"', got 'type: \"None\"'`.\n\n### 9.2.0\n- Introduced `Betalgo.Ranul.OpenAI.Contracts` project for centralized request\u002Fresponse models, enums\u002Fvalue types, and capability interfaces.\n- Replaced legacy image request models with Contracts equivalents:\n  - `CreateImageRequest`, `CreateImageEditRequest`, `CreateImageVariationRequest`\n- Reorganized image enums under `Betalgo.Ranul.OpenAI.Contracts.Enums.Image.*` and added value types (`ImageOutputFormat`, `ImageResponseFormat`, `ImageSize`, `ImageModeration`).\n- Replaced `VoiceEnum` with `Voice` (value type). Replaced `MessageRole` with `ChatCompletionRole` and\u002For `AssistantMessageRole`.\n- Added new response base types: `ResponseBase`, `ResponseBaseHeaderValues`, improved header parsing and usage exposure.\n- Updated `IImageService` to consume Contracts request models and return `ImageResponse` for image create. Edit\u002Fvariation remain legacy responses for now.\n- This is the first step of a gradual migration; changes are kept minimal and may evolve after testing.\n- See the detailed guide: [Contracts Upgrade Guide (9.2.0)](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FContracts-Project:-Introduction-and-Upgrade-Guide)\n\n### 9.1.0\n\n### Image Generation\n- Added `UsageModel` to include detailed token usage tracking for image generation responses.\n\n### JSON Schema Validation\n- Enhanced `FunctionParameters` with `MultipleOf`, `Minimum`, `Maximum`, and `Pattern` support.\n- Added `SingleOrArrayToListConverter` to handle single values or arrays.\n\n### Code Improvements\n- Refactored `MessageContent` with expression-bodied helpers and added binary file support.\n- Converted filter type definitions in `ToolDefinition` from `static string` to `const string` for clarity and performance.\n- Simplified filter creation methods.\n\n### Documentation and Formatting\n- Improved comments and formatting in `ToolDefinition`.\n- Fixed BOM character issue in `FunctionParameters`.\n\n### 9.0.4\n- Updated `Microsoft.Extensions.AI` to version `9.5.0`  \n\n### 9.0.3\n- Updated `Microsoft.Extensions.AI` to version `9.4.0-preview.1.25207.5`  \n- Added new models to the model list\n\n### 9.0.2  \n- Updated `Microsoft.Extensions.AI` to version `9.3.0-preview.1.25114.11`  \n- Added reasoning effort parameters  \n- Added `o1` and `o3-mini` models to the model list\n\n### 9.0.1\n- Message list now accept RunId\n- Upgraded to Microsoft.Extensions.AI version 9.0.1, which resolves the \"Method not found: '!!0\" error when used alongside other SDKs with different versions.\n\n### 9.0.0\n- .NET 9 support added.\n- ⚠️ Support for .NET 6 and .NET 7 has ended.\n- Fixed utility library issues and synced with latest version.\n\n### [More Change Logs](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FChange-Logs)\n---\n\nFor any issues, contributions, or feedback, feel free to reach out or submit a pull request.\n\nBetalgo X: [Betalgo (@Betalgo) \u002F X (twitter.com)](https:\u002F\u002Ftwitter.com\u002FBetalgo)  \nBetalgo Linkedin:  [Betalgo | LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fbetalgo-up )  \nTolga X: [Tolga Kayhan (@kayhantolga) \u002F X (twitter.com)](https:\u002F\u002Ftwitter.com\u002Fkayhantolga)  \nTolga Linkedin: [Tolga Kayhan | LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fkayhantolga\u002F)  \n","![Betalgo Ranul OpenAI Github 说明文档横幅](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbetalgo_openai_readme_6163b79016c8.png)\n\n## 概述\n这是一个用于访问 OpenAI API 的 .NET 库，由社区维护提供。该库使您能够轻松地将 OpenAI 的功能集成到您的 .NET 应用程序中。\n\n⭐ 您的 Star 让我们倍感鼓舞！[GitHub 仓库星标数](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fbetalgo\u002Fopenai)  \n #### 社区链接\n- [![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1250841506785529916?label=Discord)](https:\u002F\u002Fdiscord.gg\u002FgfgHsWnGxy) 欢迎加入我们，共同建设 .NET AI 社区  \n- [![静态徽章](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FReddit-Betalgo%20Developers-orange)](https:\u002F\u002Fwww.reddit.com\u002Fr\u002FBetalgoDevelopers)\n- [![静态徽章](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGithub-Discussions-black)](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fdiscussions)\n \n### 安装包\n#### 核心库\n⚠️ 我们现在有了新的 PackageId 和新的命名空间。⚠️  \n⚠️ `Betalgo.OpenAI` 现已更名为 `Betalgo.Ranul.OpenAI` ⚠️  \n\n[![Betalgo.Ranul.OpenAI](https:\u002F\u002Fimg.shields.io\u002Fnuget\u002Fv\u002FBetalgo.Ranul.OpenAI?style=for-the-badge)](https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FBetalgo.Ranul.OpenAI\u002F)\n```shell\nInstall-Package Betalgo.Ranul.OpenAI\n```\n\n#### 实验性工具库\n[![Betalgo.OpenAI.Utilities](https:\u002F\u002Fimg.shields.io\u002Fnuget\u002Fv\u002FBetalgo.OpenAI.Utilities?style=for-the-badge)](https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FBetalgo.OpenAI.Utilities\u002F)\n```shell\nInstall-Package Betalgo.OpenAI.Utilities\n```\n\n## 文档与链接\n- [实时 API](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002Frealtime) ✨新功能\n- [维基页面](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki)\n- [功能可用性表](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FFeature-Availability)\n- [变更日志](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FChange-Logs)\n- [重大变更迁移指南](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FMigration-Guides-for-breaking-changes)\n- [合约升级指南 (9.2.0)](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FContracts-Project:-Introduction-and-Upgrade-Guide)\n---\n\n## 致谢\n本项目的维护离不开各位报告问题的用户、[贡献者](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fgraphs\u002Fcontributors)以及[赞助者](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fkayhantolga)的支持。\n\n💖 赞助者：  \n[@betalgo](https:\u002F\u002Fgithub.com\u002Fbetalgo), [Laser Cat Eyes](https:\u002F\u002Flasercateyes.com\u002F)   \n[@tylerje](https:\u002F\u002Fgithub.com\u002Ftylerje), [@oferavnery](https:\u002F\u002Fgithub.com\u002Foferavnery), [@MayDay-wpf](https:\u002F\u002Fgithub.com\u002FMayDay-wpf), [@AnukarOP](https:\u002F\u002Fgithub.com\u002FAnukarOP), [@Removable](https:\u002F\u002Fgithub.com\u002FRemovable), [@Scar11](https:\u002F\u002Fgithub.com\u002FScar11)\n\n---\n\n## 示例用法\n仓库中包含一个名为 **OpenAI.Playground** 的示例项目，帮助您理解该库的工作方式。然而，在进行实验时请务必小心，因为某些测试方法可能会导致意外后果，例如文件删除或模型微调。\n\n*!! 强烈建议您在使用 Playground 时不要使用主账号，而另开一个账号。部分测试方法可能会添加或删除您的文件和模型，从而引发不必要的麻烦。 !!*\n\n您的 API 密钥可在此处获取：https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Fapi-keys  \n您的组织 ID 可在此处找到：https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Forg-settings\n\n### 不使用依赖注入\n```csharp\nvar openAIService = new OpenAIService(new OpenAIOptions()\n{\n    ApiKey = Environment.GetEnvironmentVariable(\"MY_OPEN_AI_API_KEY\")\n});\n```\n\n### 使用依赖注入\n\n#### secrets.json\n```json\n\"OpenAIServiceOptions\": {\n    \"ApiKey\": \"您的 API 密钥放这里\",\n    \"Organization\": \"您的组织 ID 放这里（可选）\",\n    \"UseBeta\": \"true\u002Ffalse（可选）\"\n}\n```\n*(要使用 [用户机密](https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Faspnet\u002Fcore\u002Fsecurity\u002Fapp-secrets?view=aspnetcore-6.0&tabs=windows)：在“解决方案资源管理器”中右键单击您的项目名称，然后选择“管理用户机密”。这是保护您的 API 密钥的好方法。)*\n\n#### Program.cs\n```csharp\nserviceCollection.AddOpenAIService();\n```\n\n**或者**\n\n```csharp\nserviceCollection.AddOpenAIService(settings => { settings.ApiKey = Environment.GetEnvironmentVariable(\"MY_OPEN_AI_API_KEY\"); });\n```\n\n注入服务后，您可以从服务提供商那里获取它：\n```csharp\nvar openAiService = serviceProvider.GetRequiredService\u003CIOpenAIService>();\n```\n\n您还可以设置默认模型（可选）：\n```csharp\nopenAiService.SetDefaultModelId(Models.Gpt_4o);\n```\n\n## ChatGPT 示例\n```csharp\nvar completionResult = await openAiService.ChatCompletion.CreateCompletion(new ChatCompletionCreateRequest\n{\n    Messages = new List\u003CChatMessage>\n    {\n        ChatMessage.FromSystem(\"你是一个乐于助人的助手。\"),\n        ChatMessage.FromUser(\"2020 年世界大赛是谁赢了？\"),\n        ChatMessage.FromAssistant(\"2020 年世界大赛是由洛杉矶道奇队赢得的。\"),\n        ChatMessage.FromUser(\"比赛是在哪里举行的？\")\n    },\n    Model = Models.Gpt_4o,\n});\nif (completionResult.Successful)\n{\n    Console.WriteLine(completionResult.Choices.First().Message.Content);\n}\n```\n\n---\n## 注意事项\n由于时间限制，不是所有方法都经过充分测试或完全文档化。如果您遇到任何问题，请随时报告或提交拉取请求。您的贡献始终受到欢迎。\n\n毋庸置疑，对于因使用该库而导致的任何损害，我概不负责。\n\n## 更改记录\n### 9.2.4\n- 修复了函数工具模式生成，确保参数始终输出 JSON Schema `type: \"object\"`，避免出现类似 `schema must be a JSON Schema of 'type: \"object\"', got 'type: \"None\"'` 的 `invalid_function_parameters` 错误。\n\n### 9.2.0\n- 引入了 `Betalgo.Ranul.OpenAI.Contracts` 项目，用于集中管理请求\u002F响应模型、枚举\u002F值类型以及能力接口。\n- 用 Contracts 对应版本替换了旧版图像请求模型：\n  - `CreateImageRequest`, `CreateImageEditRequest`, `CreateImageVariationRequest`\n- 将图像枚举重新组织到 `Betalgo.Ranul.OpenAI.Contracts.Enums.Image.*` 下，并新增了值类型（`ImageOutputFormat`, `ImageResponseFormat`, `ImageSize`, `ImageModeration`）。\n- 用 `Voice`（值类型）替换了 `VoiceEnum`。用 `ChatCompletionRole` 和\u002F或 `AssistantMessageRole` 替换了 `MessageRole`。\n- 新增了基础响应类型：`ResponseBase`, `ResponseBaseHeaderValues`，改进了头部解析及使用暴露。\n- 更新了 `IImageService` 接口，使其消费 Contracts 请求模型并返回 `ImageResponse`；目前编辑\u002F变体仍为旧版响应。\n- 这是逐步迁移的第一步，更改幅度较小，后续会根据测试情况进一步调整。\n- 详细指南请参阅：[合约升级指南 (9.2.0)](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FContracts-Project:-Introduction-and-Upgrade-Guide)\n\n### 9.1.0\n\n### 图像生成\n- 添加了 `UsageModel`，以在图像生成响应中包含详细的 token 使用跟踪信息。\n\n### JSON Schema 验证\n- 增强了 `FunctionParameters`，支持 `MultipleOf`、`Minimum`、`Maximum` 和 `Pattern`。\n- 添加了 `SingleOrArrayToListConverter`，用于处理单个值或数组。\n\n### 代码改进\n- 重构了 `MessageContent`，使用表达式体辅助方法，并增加了对二进制文件的支持。\n- 将 `ToolDefinition` 中的过滤器类型定义从 `static string` 改为 `const string`，以提高清晰度和性能。\n- 简化了过滤器创建方法。\n\n### 文档与格式\n- 改进了 `ToolDefinition` 中的注释和格式。\n- 修复了 `FunctionParameters` 中的 BOM 字符问题。\n\n### 9.0.4\n- 将 `Microsoft.Extensions.AI` 更新至版本 `9.5.0`\n\n### 9.0.3\n- 将 `Microsoft.Extensions.AI` 更新至版本 `9.4.0-preview.1.25207.5`\n- 向模型列表中添加了新模型\n\n### 9.0.2\n- 将 `Microsoft.Extensions.AI` 更新至版本 `9.3.0-preview.1.25114.11`\n- 添加了推理耗力度参数\n- 向模型列表中添加了 `o1` 和 `o3-mini` 模型\n\n### 9.0.1\n- 消息列表现在接受 RunId。\n- 升级到 Microsoft.Extensions.AI 9.0.1 版本，解决了与其他 SDK 不同版本一起使用时出现的“未找到方法：‘!!0’”错误。\n\n### 9.0.0\n- 新增 .NET 9 支持。\n- ⚠️ 对 .NET 6 和 .NET 7 的支持已结束。\n- 修复了工具库中的问题，并同步到最新版本。\n\n### [更多变更日志](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FChange-Logs)\n---\n\n如遇任何问题、需要贡献或提供反馈，请随时联系我们或提交 Pull Request。\n\nBetalgo X：[Betalgo (@Betalgo) \u002F X (twitter.com)](https:\u002F\u002Ftwitter.com\u002FBetalgo)  \nBetalgo LinkedIn：[Betalgo | LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fbetalgo-up )  \nTolga X：[Tolga Kayhan (@kayhantolga) \u002F X (twitter.com)](https:\u002F\u002Ftwitter.com\u002Fkayhantolga)  \nTolga LinkedIn：[Tolga Kayhan | LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fkayhantolga\u002F)","# OpenAI .NET 库快速上手指南\n\n本指南帮助 .NET 开发者快速集成 Betalgo.Ranul.OpenAI 社区库，以便在应用中调用 OpenAI API。\n\n## 环境准备\n\n- **操作系统**：Windows、Linux 或 macOS\n- **.NET 版本**：必须使用 **.NET 8** 或 **.NET 9**（注：.NET 6 和 .NET 7 已停止支持）\n- **前置依赖**：\n  - 有效的 OpenAI API Key（获取地址：https:\u002F\u002Fplatform.openai.com\u002Faccount\u002Fapi-keys）\n  - （可选）Organization ID\n- **开发工具**：Visual Studio 2022+、VS Code 或 JetBrains Rider\n\n## 安装步骤\n\n⚠️ **重要提示**：该库近期进行了重构，包名和命名空间已变更。\n- 旧包名：`Betalgo.OpenAI`\n- **新包名**：`Betalgo.Ranul.OpenAI`\n\n请在项目目录下运行以下命令安装核心库：\n\n```shell\ndotnet add package Betalgo.Ranul.OpenAI\n```\n\n或者在 Visual Studio 的“程序包管理器控制台”中运行：\n\n```shell\nInstall-Package Betalgo.Ranul.OpenAI\n```\n\n> **国内加速建议**：如果下载速度较慢，可配置 NuGet 国内镜像源（如阿里云、腾讯云）。\n> 例如临时使用阿里云源安装：\n> ```shell\n> dotnet add package Betalgo.Ranul.OpenAI --source https:\u002F\u002Fapi.nuget.org\u002Fv3\u002Findex.json\n> ```\n> *(注：若需永久配置，请在 `NuGet.Config` 文件中添加国内源地址)*\n\n## 基本使用\n\n### 1. 初始化服务\n\n最简单的方式是直接实例化 `OpenAIService`。请确保将 API Key 设置为环境变量 `MY_OPEN_AI_API_KEY`，或在代码中直接替换（生产环境建议使用用户机密或环境变量管理密钥）。\n\n```csharp\nvar openAIService = new OpenAIService(new OpenAIOptions()\n{\n    ApiKey = Environment.GetEnvironmentVariable(\"MY_OPEN_AI_API_KEY\")\n});\n```\n\n### 2. 调用聊天完成接口 (Chat Completion)\n\n以下示例展示了如何调用 GPT-4o 模型进行对话：\n\n```csharp\nvar completionResult = await openAiService.ChatCompletion.CreateCompletion(new ChatCompletionCreateRequest\n{\n    Messages = new List\u003CChatMessage>\n    {\n        ChatMessage.FromSystem(\"You are a helpful assistant.\"),\n        ChatMessage.FromUser(\"Who won the world series in 2020?\"),\n        ChatMessage.FromAssistant(\"The Los Angeles Dodgers won the World Series in 2020.\"),\n        ChatMessage.FromUser(\"Where was it played?\")\n    },\n    Model = Models.Gpt_4o,\n});\n\nif (completionResult.Successful)\n{\n    Console.WriteLine(completionResult.Choices.First().Message.Content);\n}\nelse\n{\n    Console.WriteLine($\"Error: {completionResult.ErrorMessage}\");\n}\n```\n\n### 3. (可选) 设置默认模型\n\n为了避免每次请求都指定模型，可以全局设置默认模型：\n\n```csharp\nopenAiService.SetDefaultModelId(Models.Gpt_4o);\n```\n\n---\n**安全提示**：初次尝试时，建议使用独立的测试账号和 API Key，避免测试代码误操作（如删除文件或微调模型）影响主账户资源。","一家基于 .NET 技术栈的电商初创团队，正急于在其客服系统中集成智能对话功能，以应对日益增长的咨询量。\n\n### 没有 openai 时\n- 开发人员需手动编写复杂的 HTTP 请求代码来处理 REST API 调用，包括繁琐的请求头设置、JSON 序列化及错误重试逻辑。\n- 每次 OpenAI 接口更新或新增模型（如 GPT-4o），团队都必须重新解析官方文档并修改底层网络代码，维护成本极高。\n- 缺乏统一的依赖注入支持，导致 API 密钥管理分散在多个文件中，存在严重的安全泄露隐患且难以进行单元测试。\n- 处理流式响应（Streaming）时需要自行拼接数据块，代码臃肿且极易出现边界条件错误，开发效率低下。\n\n### 使用 openai 后\n- 通过 `Betalgo.Ranul.OpenAI` 库提供的强类型客户端，开发者只需几行代码即可初始化服务，自动处理所有底层通信细节。\n- 库紧跟官方 API 迭代，新增模型和功能可直接通过 NuGet 包更新获取，无需改动现有业务逻辑，显著降低升级阻力。\n- 原生支持 .NET 依赖注入模式，配合 `secrets.json` 轻松实现密钥的安全配置与管理，代码结构清晰且易于测试。\n- 内置完善的流式响应处理方法，将复杂的数据流解析封装为简单的异步枚举，让实时对话功能的实现变得直观可靠。\n\nopenai 将 .NET 开发者从重复的网络协议编码中解放出来，使其能专注于构建高价值的智能业务逻辑。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fbetalgo_openai_6163b790.png","betalgo","Betalgo","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fbetalgo_1a7cb4e2.png","",null,"http:\u002F\u002Fwww.betalgo.com\u002F","https:\u002F\u002Fgithub.com\u002Fbetalgo",[81,85],{"name":82,"color":83,"percentage":84},"C#","#178600",85.3,{"name":86,"color":87,"percentage":88},"HTML","#e34c26",14.7,2999,541,"2026-04-07T01:21:02","MIT","Windows, macOS, Linux","未说明",{"notes":96,"python":97,"dependencies":98},"这是一个 .NET 库而非 Python 工具，因此不需要 GPU、特定显存或 Python 环境。最低要求是 .NET 9.0 运行时（已停止对 .NET 6 和 7 的支持）。使用时需配置 OpenAI API Key，建议在 playground 示例中使用独立账户以防误操作删除文件或模型。","不适用 (基于 .NET)",[99,100,101,102],".NET 9.0+","Microsoft.Extensions.AI >= 9.5.0","Betalgo.Ranul.OpenAI (核心库)","Betalgo.OpenAI.Utilities (可选工具库)",[52,14,35,104],"音频",[106,107,108,64,109,110,111,112,113,114,115,116],"csharp","dall-e","dotnet","openai-api","sdk","chatgpt","whisper","whisper-ai","azure-openai","ranul","tinga","2026-03-27T02:49:30.150509","2026-04-08T05:30:24.160007",[120,125,130,135,140,144],{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},23854,"遇到 JSON 解析错误（System.Text.Json.JsonException），提示无法将数值转换为字符串或无效的起始值，该怎么办？","这通常是因为 OpenAI API 返回了 HTML 错误页面而非预期的 JSON 数据（例如由于内部错误或超时）。\n1. 检查您的请求参数，有用户反馈增加 token 限制可能减少此类错误发生频率。\n2. 维护者计划改进 SDK 以更好地处理此类 HTML 响应，目前若遇到此问题，可能是 API 端临时故障或账户\u002F地区相关问题。\n3. 如果是超时导致的 HTML 响应，请参考超时设置相关的解决方案。","https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fissues\u002F408",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},23855,"如何正确计算中文字符的 Token 数量？","该库自带的分词器可能对中文字符支持不佳。建议使用第三方库 SharpToken 来获得更准确的中文 Token 计数。\n引用地址：https:\u002F\u002Fgithub.com\u002Fdmitry-brazhenko\u002FSharpToken","https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fissues\u002F192",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},23856,"如何在项目中配置和使用 Azure OpenAI 服务？","需要在服务配置中指定 ProviderType 为 Azure，并设置资源名称、部署 ID、API 版本和密钥。示例代码如下：\n\nbuilder.Services.AddOpenAIService(options =>\n{\n    options.ProviderType = ProviderType.Azure;\n    options.ResourceName = builder.Configuration[\"OpenAIServiceOptions:ResourceName\"];\n    options.DeploymentId = builder.Configuration[\"OpenAIServiceOptions:DeploymentId\"];\n    options.ApiVersion = \"2023-03-15-preview\";\n    options.ApiKey = builder.Configuration[\"OpenAIServiceOptions:ApiKey\"];\n});\n\n注意：使用 Azure 时，Model 属性应设置为您的部署名称（如 \"gpt-4\"），而不是标准的模型名称（如 Models.ChatGpt3_5Turbo）。详细文档请参阅项目 Wiki 的 Azure OpenAI 页面。","https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fissues\u002F181",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},23857,"调用 API 时偶尔出现\"输入不包含任何 JSON 令牌\"的错误，原因是什么？","这通常是由于 HttpClient 默认超时时间过短，导致长耗时请求被切断，API 返回了非 JSON 的超时错误页面。\n解决方法是增加 HttpClient 的超时时间。可以通过以下两种方式配置：\n\n方法 1（直接实例化）：\nvar openAI = new OpenAIService(new OpenAiOptions(){ \u002F* 你的配置 *\u002F }, new HttpClient() { Timeout = TimeSpan.FromSeconds(240) });\n\n方法 2（依赖注入）：\nserviceCollection.AddOpenAIService().ConfigureHttpClient(r => r.Timeout = TimeSpan.FromSeconds(240));","https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fissues\u002F207",{"id":141,"question_zh":142,"answer_zh":143,"source_url":129},23858,"如何在 Discussions 或 Issue 中提问才能获得更好的帮助？","为了获得全球社区的有效帮助，请遵循以下建议：\n1. 请使用英语进行交流。如果母语不是英语，可以先用母语撰写，然后使用翻译软件或 AI 工具翻译成英文后再发布。\n2. 确保问题与当前 Issue 的主题相关。如果不相关或属于一般性咨询，请在项目的 Discussions 板块新建帖子，而不是在无关的 Issue 下评论，这样有助于维护者追踪和解决问题。",{"id":145,"question_zh":146,"answer_zh":147,"source_url":134},23859,"能否同时配置客户端以支持 Azure OpenAI（用于聊天）和原生 OpenAI（用于图像生成）？","这是一个常见需求，因为 Azure OpenAI 目前不支持 DALL-E 图像生成。虽然单个客户端实例通常绑定一种 ProviderType，但你可以通过创建两个不同的服务实例来实现：一个配置为 Azure 用于聊天补全，另一个配置为默认 OpenAI 用于图像生成。在代码中分别注入或实例化这两个服务，根据业务逻辑调用对应的服务即可。",[149,154,159,164,169,174,179,184,189,194,199,204,209,214,219,224,229,234,239,244],{"id":150,"version":151,"summary_zh":152,"released_at":153},145427,"v9.1.0","## 变更内容\n* @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F722 中更新了图像生成参数及使用情况跟踪。\n* @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F723 中增强了 MessageContent，增加了对文件的支持并进行了重构。\n* @OmarSilviniDocsMarshal 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F721 中为 RequestModels 添加了参数，以支持 OpenAI 的新功能。\n* @repko-artem 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F726 中为 PropertyDefinition 增加了对 JSON Schema $defs、definitions、$ref、oneOf、anyOf 等的支持。\n* @sipsorcery 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F714 中为 TTS 和 Realtime 端点添加了语音枚举。\n* 9.1.0 版本由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F728 中发布。\n\n## 新贡献者\n* @OmarSilviniDocsMarshal 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F721 中完成了首次贡献。\n* @repko-artem 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F726 中完成了首次贡献。\n* @sipsorcery 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F714 中完成了首次贡献。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv9.0.4...v9.1.0","2025-07-11T19:24:22",{"id":155,"version":156,"summary_zh":157,"released_at":158},145428,"v9.0.4","## 变更内容\n* 由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F713 中进行同步\n* 由 @jozkee 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F715 中更新至 M.E.AI 9.4.3-preview.1.25230.7\n* 由 @eiriktsarpalis 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F718 中将兼容 OpenAI 的函数模式转换应用于聊天客户端\n* 9.0.4 版本，由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F719 中发布\n\n## 新贡献者\n* @eiriktsarpalis 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F718 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv9.0.3...v9.0.4","2025-07-11T19:24:09",{"id":160,"version":161,"summary_zh":162,"released_at":163},145429,"v9.0.3","## 变更内容\n* @kinetiq 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F711 中添加了 Gpt-4.1 系列（base、mini、nano 及所有快照）\n* @jozkee 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F707 中更新至 M.E.AI 9.4.0-preview.1.25207.5\n* @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F712 中发布了 9.0.3 版本\n\n## 新贡献者\n* @kinetiq 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F711 中完成了首次贡献\n* @jozkee 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F707 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv9.0.2...v9.0.3","2025-04-23T23:58:13",{"id":165,"version":166,"summary_zh":167,"released_at":168},145430,"v9.0.2","## 变更内容\n* 功能新增：添加对推理工作量、o1 和 o3-mini 模型的支持，由 @RealWave-Skylar 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F701 中实现。\n* 更新至 M.E.AI 9.3.0-preview.1.25161.3，由 @stephentoub 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F702 中完成。\n* 支持 `reasoning_content` 字段，由 @MayDay-wpf 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F700 中实现。\n* 9.0.2 版本，由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F705 中发布。\n\n## 新贡献者\n* @RealWave-Skylar 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F701 中完成了首次贡献。\n* @MayDay-wpf 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F700 中完成了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv9.0.1...v9.0.2","2025-04-23T23:58:00",{"id":170,"version":171,"summary_zh":172,"released_at":173},145431,"v9.0.1","### 9.0.1\n- 消息列表现在接受 RunId 参数\n- 升级到 Microsoft.Extensions.AI 9.0.1 版本，解决了在与其他版本不同的 SDK 同时使用时出现的“方法未找到: '!!0”错误。\n\n## 变更内容\n* 解决 #682 问题，扩展 PaginationRequest 为 MessageListRequest，并添加 run_id 参数，由 jmuller3 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F683 中完成\n* 将 M.E.AI 更新至 9.0.1-preview.1.24570.5 版本，由 stephentoub 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F686 中完成\n* 9.0.1 版本，由 kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F687 中发布\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv9.0.0...v9.0.1","2024-12-04T23:00:47",{"id":175,"version":176,"summary_zh":177,"released_at":178},145432,"v9.0.0","### 9.0.0\n- 新增对 .NET 9 的支持。\n- ⚠️ 对 .NET 6 和 .NET 7 的支持已结束。\n- 修复了工具库中的问题，并同步到最新版本。\n\n\n## 变更内容\n* dotnet 9 由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F680 中实现\n* 9.0.0 由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F681 中实现\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.10.1...v9.0.0","2024-11-19T08:52:46",{"id":180,"version":181,"summary_zh":182,"released_at":183},145433,"v8.10.1","### 8.10.1\n- 修复了一个默认在请求中包含 `Store` 参数的问题，该问题会导致 Azure OpenAI 模型出现错误。现在该参数为可选，并且除非显式设置，否则不会被序列化。\n\n## 变更内容\n* 由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F676 中同步\n* 由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F677 中修改了 `ChatCompletionCreateRequest.cs` 中的 `Store` 属性\n* 8.10.1 版本由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F678 中发布\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.10.0...v8.10.1","2024-11-18T13:27:17",{"id":185,"version":186,"summary_zh":187,"released_at":188},145434,"v8.10.0","### 8.10.0\n- 添加了对 `Microsoft.Extensions.AI` 的 `IChatClient` 和 `IEmbeddingGenerator` 的支持（更多信息将很快发布在 Wiki 上）。\n- 向 `AssistantResponse` 中添加了缺失的 `Temperature` 和 `TopP` 参数。\n- 向 `ChatCompletionCreateRequest` 中添加了缺失的 `Store` 参数。\n\n- 破坏性变更：\n   - ⚠️ 将 `CreatedAt` 参数重命名为 `CreatedAtUnix`，并将其类型由 `int` 改为 `long`。同时新增了一个 `CreatedAt` 参数，类型为 `DateTimeOffset`，该参数会自动将 Unix 时间转换为 `DateTime` 格式。\n\n## 变更内容\n* 功能\u002F向请求中添加 store 属性，由 @itsmuntadhar 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F664 中实现。\n* #657 为 AssistantResponse 添加缺失的属性 -> temperature、top_p，由 @jmuller3 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F658 中实现。\n* 功能\u002F修复 created at 类型问题，由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F670 中实现。\n* 添加 Microsoft.Extensions.AI 的 IChatClient \u002F IEmbeddingGenerator 接口实现，由 @stephentoub 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F659 中实现。\n* 8.10.0，由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F672 中发布。\n\n## 新贡献者\n* @itsmuntadhar 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F664 中完成了首次贡献。\n* @jmuller3 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F658 中完成了首次贡献。\n* @stephentoub 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F659 中完成了首次贡献。\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.9.0...v8.10.0","2024-11-13T14:31:52",{"id":190,"version":191,"summary_zh":192,"released_at":193},145435,"v8.9.0","- [实时 API](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002Frealtime) ✨新功能\n## 变更内容\n* 由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F662 中同步\n* 由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F667 中集成实时 API\n* 由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F668 中发布 8.9.0 版本\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.8.0...v8.9.0","2024-11-11T12:23:47",{"id":195,"version":196,"summary_zh":197,"released_at":198},145436,"v8.8.0","### 8.8.0\n\n- **兼容性增强**：现在您可以在同一个项目中同时使用本库与官方 OpenAI 库和\u002F或 Semantic Kernel。此次更新中的命名变更支持这一功能。\n\n- **命名空间和包 ID 更新**：命名空间和 PackageId 已从 `Betalgo.OpenAI` 更改为 `Betalgo.Ranul.OpenAI`。\n\n- **OpenAI 命名一致性**：我们在整个库中统一使用“OpenAI”这一名称，替换了所有出现的“OpenAi”或其他变体。\n\n- **迁移说明**：IntelliSense 应该可以帮助您更新代码。如果未能自动完成，请手动进行以下更改：\n  - 切换到新的 NuGet 包：将 `Betalgo.OpenAI` 替换为 `Betalgo.Ranul.OpenAI`。\n  - 将所有命名空间从 `OpenAI` 更新为 `Betalgo.Ranul.OpenAI`。\n  - 将所有“OpenAi”、“Openai”或其他变体替换为“OpenAI”。\n\n- **需要帮助？** 如果您遇到任何问题，欢迎通过我们的 Discord 频道、Reddit 频道或 GitHub 讨论区联系我们。我们非常乐意为您提供帮助。\n\n- **欢迎反馈**：如果您发现任何错误或遗漏的命名更改，请提交一个问题告知我们。\n\n- **Utilities 库状态**：请注意，Utilities 库可能会在一段时间内仍处于故障状态。我将在完成实时 API 实现后，集中精力修复它。\n\n## 变更内容\n* 由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F652 中同步\n* 将命名空间从 OpenAI 重命名为 Betalgo.OpenAI，以避免与 … 冲突，由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F655 中完成\n* 8.8.0 Betalgo.Ranul.OpenAI，由 @kayhantolga 在 https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F661 中发布\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.7.2...v8.8.0","2024-11-01T11:49:32",{"id":200,"version":201,"summary_zh":202,"released_at":203},145437,"v8.7.2","### 8.7.2\r\n- Fixed incorrect Azure Urls. \r\n- Token usage response extended with `PromptTokensDetails`, `audio_tokens` and `cached_tokens`.\r\n- Model list extended with `Gpt_4o_2024_08_06` and `Chatgpt_4o_latest`.\r\n\r\n## What's Changed\r\n* Azure DataPlane Endpoints are updated by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F648\r\n* Add Cached Tokens to UsageResponse by @Mungert69 in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F642\r\n* Updated the model list to include support for new models. by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F650\r\n* 8.7.2 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F651\r\n\r\n## New Contributors\r\n* @Mungert69 made their first contribution in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F642\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.7.1...v8.7.2","2024-10-10T12:28:58",{"id":205,"version":206,"summary_zh":207,"released_at":208},145438,"v8.7.1","### 8.7.1 \r\n- moved `strict` paremeter from `ToolDefinition` to `FunctionDefinition`\r\n\r\n## What's Changed\r\n* moved strict paremeter from ToolDefinition to FunctionDefinition by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F638\r\n* 8.7.1 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F639\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.7.0...v8.7.1","2024-10-10T12:27:42",{"id":210,"version":211,"summary_zh":212,"released_at":213},145439,"v8.7.0","### 8.7.0\r\n- Added Support for o1 reasing models (`o1-mini` and `o1-preview`). \r\n- Added `MaxCompletionTokens` for `chat completions`.\r\n- Added support for `ParallelToolCalls` for `chat completions`.\r\n- Added support for `ServiceTier` for `chat completions`.\r\n- Added support for `ChunkingStrategy` in `Vector Store` and `Vector Store Files`.\r\n- Added support for `Strict` in `ToolDefinition`.\r\n- Added support for `MaxNumberResults` and `RankingOptions` for `FileSearchTool`.\r\n- Added support for `ReasoningTokens` for `token usage`.\r\n- Added support for `ResponseFormatOneOfType` for `AssistantResponse.cs`.\r\n\r\n\r\n## What's Changed\r\n* Utilities update 8.1.0 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F621\r\n* sync by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F630\r\n* Added support for reasoning models by @o-khytrov in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F627\r\n* feat: add required as tool choice by @eugene-yao-zocdoc in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F624\r\n* added Tool Strict Mode. by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F631\r\n* chunking strategy in vector store by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F632\r\n* Added Response Type for Assistant response and fixed ScoreThreshold bug by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F633\r\n* 8.7.0 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F635\r\n* Added support for parallel tool calls and service tier. Improved docu… by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F634\r\n* 8.7.0 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F636\r\n\r\n## New Contributors\r\n* @o-khytrov made their first contribution in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F627\r\n* @eugene-yao-zocdoc made their first contribution in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F624\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.6.2...v8.7.0","2024-09-23T12:48:43",{"id":215,"version":216,"summary_zh":217,"released_at":218},145440,"v8.6.2","### 8.6.2\r\n- Added support for Structured Outputs, here is the link for samples: [Wiki, Structured Outputs ](https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fwiki\u002FStructured-Outputs)\r\n\r\n## What's Changed\r\n* 8.6.2 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F618\r\n* version update 8.6.2 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F619\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.6.1...v8.6.2","2024-08-26T15:24:14",{"id":220,"version":221,"summary_zh":222,"released_at":223},145441,"v8.6.1","### 8.6.1\r\n- Updated Models with new GPT-4o mini model.\r\n\r\n## What's Changed\r\n* Add support for GPT-4o mini by @ChaseIngersol in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F612\r\n* Dev by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F613\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.6.0...v8.6.1","2024-07-18T18:38:32",{"id":225,"version":226,"summary_zh":227,"released_at":228},145442,"v8.6.0","### 8.6.0\r\n- Fixed Azure Assistant URLs.\r\n- Updated library logo.\r\n- Added support for tool resources in Assistant response.\r\n\r\n## What's Changed\r\n* Fixed a bug in the Azure Assistants API query string by @yt3trees in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F607\r\n* 8.6.0 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F610\r\n* 8.6.0 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F611\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.5.1...v8.6.0","2024-07-18T18:37:49",{"id":230,"version":231,"summary_zh":232,"released_at":233},145443,"v8.5.1","### 8.5.1\r\n- Introduced `IsDelta` into BaseResponseModel, which can help to determine if incoming data is part of the delta.\r\n\r\n## What's Changed\r\n* 8.5.1 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F605\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.5.0...v8.5.1","2024-06-18T11:27:13",{"id":235,"version":236,"summary_zh":237,"released_at":238},145444,"v8.5.0","### 8.5.0\r\n- Assistant Stream now returns the `BaseResponse` type, but they can be cast to the appropriate types(`RunStepResponse`,`RunResponse`,`MessageResponse`). The reason for this change is that we realized the stream API returns multiple different object types rather than returning a single object type.\r\n- The Base Response now has a `StreamEvent` field, which can be used to determine the type of event while streaming.\r\n\r\n## What's Changed\r\n* Update Readme.md by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F593\r\n* sync by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F595\r\n* code cleanup by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F597\r\n* Improved Assistant streaming methods by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F600\r\n* sync by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F601\r\n* 8.5.0 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F602\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.4.0...v8.5.0","2024-06-15T17:16:34",{"id":240,"version":241,"summary_zh":242,"released_at":243},145445,"v8.4.0","### 8.4.0\r\n- Added Stream support for submitToolOutputsToRun, createRun, and createThreadAndRun\r\n- 🎉 With this update, we are now in sync with OpenAI's latest API changes. We shouldn't have any missing features as of now. \r\n\r\n## What's Changed\r\n* 584 the assistantmodifyrequest not math the doc of openai by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F585\r\n* Stream support added for submitToolOuputsToRun, createRun and createT… by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F589\r\n* 8.4.0 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F590\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.3.0...v8.4.0","2024-06-11T14:33:47",{"id":245,"version":246,"summary_zh":247,"released_at":248},145446,"v8.3.0","### 8.3.0\r\n- Updated Assistant tests, added sample for CreateMessageWithImage\r\n- Azure Assistant endpoints are updated since documentation reference still earlier version (Assistant v1). I am not sure if Azure supports all Assistant v2 features. So, feedback is much appreciated.\r\n- Fixed error handling and response parsing for audio transcription result in text mode.\r\n- Fixed Culture issue for number conversions (Audio Temperature and Image N)\r\n- Removed file_ids from Create Assistant\r\n- Added Support for Chat LogProbs\r\n- Fixed File_Id Typo in file VisionImageUrl\r\n- Updated File purpose enum list\r\n\r\n## What's Changed\r\n* Feature\u002Fassistant file ids stability by @pappde in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F574\r\n* The routes for Azure OpenAI Assistant are fixed. by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F578\r\n* Fixed ToString culture problems by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F579\r\n* 573 audiocreatetranscriptionrequest if specify a responseformat that isnt json then responsesuccessful is not set correctly by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F580\r\n* Added support for chat LogProbs. by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F581\r\n* 8.3.0 by @kayhantolga in https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fpull\u002F582\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fbetalgo\u002Fopenai\u002Fcompare\u002Fv8.2.2...v8.3.0","2024-06-03T20:33:38"]