Standard.AI.OpenAI:面向 .NET 开发人员的库

作者:微信公众号:【架构师老卢】
2-19 14:36
27

概述:在快速发展的科技领域,人工智能 (AI) 在推动创新和提高效率方面发挥着举足轻重的作用,Standard.AI.OpenAI 的成立标志着一个重要的里程碑。Standard.AI.OpenAI 简介Standard.AI.OpenAI 不仅仅是另一个库;这证明了当软件工程师社区齐心协力构建符合高标准的工程原理、模式和工具的解决方案时,可以取得什么成就。此 .NET 库构建在 OpenAI API 的 RESTful 端点之上,有助于开发 AI 驱动的解决方案,使开发人员能够在其 .NET 应用程序中利用高级机器学习模型的强大功能。符合标准:核心理念Standard.AI.OpenAI 的开发以

在快速发展的科技领域,人工智能 (AI) 在推动创新和提高效率方面发挥着举足轻重的作用,Standard.AI.OpenAI 的成立标志着一个重要的里程碑。

Standard.AI.OpenAI 简介

Standard.AI.OpenAI 不仅仅是另一个库;这证明了当软件工程师社区齐心协力构建符合高标准的工程原理、模式和工具的解决方案时,可以取得什么成就。此 .NET 库构建在 OpenAI API 的 RESTful 端点之上,有助于开发 AI 驱动的解决方案,使开发人员能够在其 .NET 应用程序中利用高级机器学习模型的强大功能。

符合标准:核心理念

Standard.AI.OpenAI 的开发以严格遵守标准为指导,该标准融合了最佳实践和工程指南,旨在确保创建健壮、可维护和高效的软件。这个库是无数个夜晚结对编程、测试驱动开发和广泛研究的产物,所有这些都旨在打造一个不仅满足开发人员的技术要求,而且符合软件工程道德标准的工具。

Standard.AI.OpenAI 入门

要开始使用 Standard.AI.OpenAI,开发人员必须完成一系列初步步骤,从创建 OpenAI 帐户开始。在此之后,可以通过 NuGet 将 Standard.AI.OpenAI 库集成到项目中,并且必须通过 OpenAI 平台生成 API 密钥。这些初始步骤为开发人员开始构建 AI 驱动的 .NET 应用程序奠定了基础。

OpenAI 帐户和 API 密钥

第一步涉及创建一个 OpenAI 帐户并生成一个 API 密钥,该密钥作为访问 OpenAI API 广泛功能的网关。此过程非常简单,对于验证从应用程序向 OpenAI 服务发出的请求至关重要。

安装库

设置 OpenAI 帐户后,下一步是将 Standard.AI.OpenAI 库安装到 .NET 项目中。这可以通过 NuGet(.NET 的包管理器)完成,它简化了将外部库合并到项目中的过程。

编写您的第一个 AI 驱动的程序

完成设置后,开发人员可以潜心编写他们的第一个 AI 驱动的程序。该库提供各种功能,包括补全、聊天补全和微调,每种功能都针对不同的用例和类型的 AI 交互量身定制。下面是如何在 .NET 应用程序中实现这些功能的示例:

Completions:以下示例演示如何编写第一个 Completions 程序。

using System;  
using System.Threading.Tasks;  
using Standard.AI.OpenAI.Clients.OpenAIs;  
using Standard.AI.OpenAI.Models.Configurations;  
using Standard.AI.OpenAI.Models.Services.Foundations.Completions;  
  
namespace ExampleOpenAIDotNet  
{  
    internal class Program  
    {  
        static async Task Main(string[] args)  
        {  
            var openAIConfigurations = new OpenAIConfigurations  
            {  
                ApiKey = "YOUR_API_KEY_HERE",  
                OrganizationId = "YOUR_OPTIONAL_ORG_ID_HERE"  
            };  
  
            var openAIClient = new OpenAIClient(openAIConfigurations);  
  
            var inputCompletion = new Completion  
            {  
                Request = new CompletionRequest  
                {  
                    Prompts = new string[] { "Human: Hello!" },  
  
                    Model = "text-davinci-003"  
                }  
            };  
  
            Completion resultCompletion =  
                await openAIClient.Completions.PromptCompletionAsync(  
                    inputCompletion);  
  
            Array.ForEach(  
                resultCompletion.Response.Choices,   
                choice => Console.WriteLine(choice.Text));  
        }  
    }  
}

聊天完成: 以下示例演示了如何编写第一个聊天完成程序。

using System;  
using System.Threading.Tasks;  
using Standard.AI.OpenAI.Clients.OpenAIs;  
using Standard.AI.OpenAI.Models.Configurations;  
using Standard.AI.OpenAI.Models.Services.Foundations.ChatCompletions;  
  
namespace ExampleOpenAIDotNet  
{  
    internal class Program  
    {  
        static async Task Main(string[] args)  
        {  
            var openAIConfigurations = new OpenAIConfigurations  
            {  
                ApiKey = "YOUR_API_KEY_HERE",  
                OrganizationId = "YOUR_OPTIONAL_ORG_ID_HERE"  
            };  
  
            var openAIClient = new OpenAIClient(openAIConfigurations);  
  
            var chatCompletion = new ChatCompletion  
            {  
                Request = new ChatCompletionRequest  
                {  
                    Model = "gpt-3.5-turbo",  
                    Messages = new ChatCompletionMessage[]  
                    {  
                        new ChatCompletionMessage  
                        {  
                            Content = "What is c#?",  
                            Role = "user",  
                        }  
                    },  
                }  
            };  
  
            ChatCompletion resultChatCompletion =  
                await openAIClient.ChatCompletions.SendChatCompletionAsync(  
                    chatCompletion);  
  
            Array.ForEach(  
                resultChatCompletion.Response.Choices,  
                choice => Console.WriteLine(  
                    value: $"{choice.Message.Role}: {choice.Message.Content}"));  
        }  
    }  
}

微调: 以下示例演示如何编写第一个 Fine-tunes 程序。

using System;  
using System.IO;  
using System.Text;  
using System.Threading.Tasks;  
using Standard.AI.OpenAI.Clients.OpenAIs;  
using Standard.AI.OpenAI.Models.Configurations;  
using Standard.AI.OpenAI.Models.Services.Foundations.AIFiles;  
using Standard.AI.OpenAI.Models.Services.Foundations.FineTunes;  
  
namespace Examples.Standard.AI.OpenAI.Clients.FineTunes  
{  
    internal class Program  
    {  
        static async Task Main(string[] args)  
        {  
            var openAIConfigurations = new OpenAIConfigurations  
            {  
                ApiKey = "YOUR_API_KEY_HERE",  
                ApiUrl = "https://api.openai.com"  
            };  
  
            IOpenAIClient openAIClient =  
                new OpenAIClient(openAIConfigurations);  
  
            MemoryStream memoryStream = CreateRandomStream();  
  
            var aiFile = new AIFile  
            {  
                Request = new AIFileRequest  
                {  
                    Name = "Test",  
                    Content = memoryStream,  
                    Purpose = "fine-tune"  
                }  
            };  
  
            AIFile file = await openAIClient.AIFiles  
                .UploadFileAsync(aiFile);  
  
            var fineTune = new FineTune();  
            fineTune.Request = new FineTuneRequest();  
  
            fineTune.Request.FileId =  
                file.Response.Id;  
  
            FineTune fineTuneResult =  
                await openAIClient.FineTuneClient  
                    .SubmitFineTuneAsync(fineTune);  
  
            Console.WriteLine(fineTuneResult);  
        }  
  
        private static MemoryStream CreateRandomStream()  
        {  
            string content = "{\"prompt\": \"\<prompt text>\", \"completion\": \"\<ideal generated text>\"}";  
  
            return new MemoryStream(Encoding.UTF8.GetBytes(content));  
        }  
    }  
}

这些示例为开发人员开始试验 AI 奠定了基础,鼓励对 OpenAI API 提供的各种功能进行定制和探索。

优雅地处理异常

Standard.AI.OpenAI 的强大架构不仅强调功能,还强调可靠性和弹性,确保使用该库构建的应用程序能够优雅地处理不可预见的错误和异常。在软件开发中,尤其是在与 OpenAI API 等外部服务交互时,遇到错误是不可避免的。但是,管理这些错误的方式可能会显著影响应用程序的稳定性和可用性。这就是 Standard.AI.OpenAI 的综合异常处理框架发挥作用的地方。

例外类型:

Standard.AI.OpenAI 将异常分为几种类型,每种类型都旨在表示 API 交互过程中可能出现的特定类型的问题。这些异常提供了清晰度和上下文,使开发人员更容易查明错误的根源并有效解决它。以下是库定义的一些自定义例外:

  • ChatCompletionClientValidationException:当聊天完成功能出现验证错误时,将引发此异常。例如,如果输入数据不符合预期的格式或缺少必填字段,则此异常会提醒开发人员注意验证问题的确切性质。
  • ChatCompletionClientDependencyException:使用聊天完成功能时出现依赖问题时遇到。如果聊天完成功能所依赖的基础服务或库出现故障,则可能会出现这种情况。
  • ChatCompletionClientServiceException:此异常是由聊天完成操作期间的服务级别错误触发的。这可能是由于服务器端的问题,例如停机或 OpenAI API 服务中的内部错误。
  • FineTuneClientValidationException:类似于 ChatCompletionClientValidationException,但特定于库的微调功能。当为微调操作提供的数据不符合验证条件时,将引发它。
  • FineTuneClientDependencyException:此异常表示微调功能中存在依赖关系错误。它可能与微调操作所需的外部服务或库有关。
  • FineTuneClientServiceException:表示微调操作期间在服务级别发生的错误。这包括服务器错误、超出 API 速率限制或其他服务中断等问题。

处理异常:

Standard.AI.OpenAI 中的这些异常设计允许开发人员实现复杂的错误处理机制。通过捕获这些异常,开发人员可以向用户提供更丰富的反馈,实现重试或回退逻辑,并记录错误以供进一步调查。下面是如何在 .NET 应用程序中处理这些异常的示例:

try  
{  
    // Attempt to perform a chat completion operation  
}  
catch (ChatCompletionClientValidationException ex)  
{  
    // Handle validation errors (e.g., log the issue, alert the user)  
}  
catch (ChatCompletionClientDependencyException ex)  
{  
    // Handle dependency errors (e.g., attempt a retry, notify the user)  
}  
catch (ChatCompletionClientServiceException ex)  
{  
    // Handle service errors (e.g., implement fallback logic)  
}  
catch (Exception ex)  
{  
    // Catch-all for any other unexpected errors  
}

这种异常处理方法可确保应用程序即使在出现错误时也能保持弹性和用户友好性。它允许开发人员优雅地管理问题,提高其软件的整体可靠性和稳健性。

为 Standard.AI.OpenAI 做贡献

Standard.AI.OpenAI 库是社区努力的结果,我们热烈欢迎贡献。无论是通过编码、文档还是参与现场会议,都有很多方法可以参与其中。该项目遵循 C# 编码标准和团队标准,确保贡献保持库的高质量和标准合规性。

现场会议和社区参与

Standard.AI.OpenAI 的开发是一个开放的过程,在多个平台上直播了实时编码会议和讨论。这些会议提供了对图书馆发展的见解,为社区提供了一个参与、学习和贡献的独特机会。

总结

Standard.AI.OpenAI 证明了 .NET 社区在共同构建真正非凡的东西时可以取得的成就。通过遵守标准、接受道德实践和营造协作环境,该图书馆不仅使开发人员能够创建人工智能驱动的解决方案,而且还致力于积极的价值观和社区发展。无论您是经验丰富的 .NET 开发人员还是刚刚起步,Standard.AI.OpenAI 都能提供您所需的工具和支持,以探索应用程序中 AI 的激动人心的可能性。

相关留言评论
昵称:
邮箱:
阅读排行