JaneConan / Senparc.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": "DefaultCacheTest"
  },
  //Senparc.AI 设置
  "SenparcAiSetting": {
"IsDebug": true,
    "AiPlatform": "NeuCharOpenAI",
    "NeuCharOpenAIKeys": {
      "ApiKey": "YourNeuCharApiKey",
      "NeuCharEndpoint": "https://www.neuchar.com/<DeveloperId>/"
    },
    "AzureOpenAIKeys": {
      "ApiKey": "YourAzureApiKey",
      "AzureEndpoint": "https://xxxx.openai.azure.com/",
      "AzureOpenAIApiVersion": "2022-12-01"
    },
    "OpenAIKeys": {
      "ApiKey": "YourOpenAIKey",
      "OrgaizationId": "YourOpenAIOrgId"
    }
  }

其中:AiPlatform 目前可选值为 OpenAINeuCharOpenAIAzureOpenAI,分别对应 openai.com 官方接口(OpenAI),以及 https://www.neuchar.com 由 Senparc 提供的中转接口,及基于微软 Azure 的 Azure OpenAI 接口(AOAI),系统会根据配置自动实现切换,无需在逻辑代码中进行判断。

仅当 AiPlatform 设置为 OpenAI 时,才需要设置 OpenAIKeys 及以下参数。

仅当 AiPlatform 设置为 NeuCharOpenAI 时,才需要设置 NeuCharOpenAIKeys 及以下参数。

仅当 AiPlatform 设置为 AzureOpenAI 时,才需要设置 AzureOpenAIKeys 及以下参数。

提示:AzureOpenAI 调用限制请参考:https://learn.microsoft.com/en-us/azure/cognitive-services/openai/quotas-limits
OpenAI 调用限制请参考 OpenAI 后台:https://platform.openai.com/docs/guides/rate-limits

第二步:开发

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

示例

所有快速参考示例位于 /Samples/ 文件夹内

文件夹 说明
Samples/Senparc.AI.Samples.Consoles 命令行

命令示例行使用说明

1. 打开解决方案

打开解决方案 Senparc.AI.sln,设置 appsettings.json 中 ApiKey 等平台参数,启动项目 Senparc.AI.Samples.Consoles

image

2. 操作

2.1 对话

输入 1,进入对话操作:

image

2.2 Embedding

在上一步输入 2 即可进入 Embedding 操作,Embedding 分为常规信息和引用信息两类,将在下一步中做选择:

image

2.2.1 常规 Embedding(Information)

选择 1,进入到常规 Embedding 测试,输入信息由 3 个英文冒号分割,录入完成后输入 n 开始对话测试:

image

2.2.2 引用 Embedding(Reference)

2.2.2 上一步选择 2,进入到引用 Embedding 测试,输入信息由 3 个英文冒号分割,录入完成后输入 n 开始对话测试:

image

2.3 DallE 绘图操作

初始界面中输入 3,进入 DallE 接口的绘图操作:

image

结果将以 URL 的形式返回,此时出入 s ,可保存图片到本地: image

注意:接口返回的 URL 是一个暂存地址,不可用于持久化的展示,需要及时保存,

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%