weianweigan / Senaprc.AI

Senparc 全家桶的 AI 扩展包

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Senaprc.AI

Senparc 全家桶的 AI 扩展包,目前主要集中于 LLM(大语言模型)的交互。

项目介绍

Senparc.AI 为所有标准接口和基础功能的基础模块

Senparc.AI.Kernel 为基于 Senparc.AI 标准,使用 SemanticKernel 实现的接口调用,可以实现即插即用。

开发过程

第一步:配置账号

在 appsettings.json 中配置 OpenAI 或 Azure OpenAI 的接口信息,如:

  //CO2NET 设置
  "SenparcSetting": {
    "IsDebug": true,
    "DefaultCacheNamespace": "SenparcAiCache"
  },
  "SenparcAiSetting": {
    "IsDebug": true,
    "AiPlatform": "AzureOpenAI",
    "ApiKey": "YourKey",
    "OrgaizationId": "YourOrgId",
    //当设置 AiPlatform 为 AzureOpenAI 时需要设置以下参数:
    "AzureEndpoint": "https://xxx.openai.azure.com",
    "AzureOpenAIApiVersion": "2022-12-01"
  },

其中:AiPlatform 目前可选值为 OpenAIAzureOpenAI,分别对应 OpenAI.com 官方接口,以及基于微软 Azure 的 Azure OpenAI 接口,系统会根据配置自动实现切换,无需在逻辑代码中进行判断。

仅当 AiPlatform 设置为 OpenAI 时,才需要设置 OrgaizationId 参数。

仅当 AiPlatform 设置为 AzureOpenAI 时,才需要设置 AzureEndpointAzureOpenAIApiVersion 参数。

第二步:开发

Senparc.AI 使用了创新的对话式编程体验,您无需了解过多不同平台、SDK 的详细用法,只需要按照自己的想法进行定义和编程,最后接收结果,以目前最火的聊天场景(Chat)为例:

// 创建 AI Handler 处理器(也可以通过工厂依赖注入)
var handler = new SemanticAiHandler();

// 定义 AI 接口调用参数和 Token 限制等
var promptParameter = new PromptConfigParameter()
{
    MaxTokens = 2000,
    Temperature = 0.7,
    TopP = 0.5,
};

// 准备运行
var userId = "JeffreySu";//区分用户
var modelName = "text-davinci-003";//默认使用模型
var iWantToRun = 
     handler.IWantTo()
            .ConfigModel(ConfigModel.TextCompletion, userId, modelName)
            .BuildKernel()
            .RegisterSemanticFunction("ChatBot", "Chat", promptParameter)
            .iWantToRun;

// 输入/提问,获取结果
var prompt = "请问**有多少人口?";
var aiRequest = iWantToRun.CreateRequest(prompt, true, true);
var aiResult = await iWantToRun.RunAsync(aiRequest);
//aiResult.Result 结果:**的人口约为13.8亿。

image

TODO:

  1. 实现更多模型和模式的匹配。
  2. 实现全自动的工厂模块自动配置。
  3. 集成到 Senaprc.Weixin SDK,0 逻辑代码实现 AI 能力接入(聊天场景为主)。
  4. 集成到 NeuCharFramework,0 逻辑代码实现 AI 能力接入(开发和云运营场景为主)。

About

Senparc 全家桶的 AI 扩展包

License:Apache License 2.0


Languages

Language:C# 100.0%