Skip to content

Commit

Permalink
v0.2.0 添加 NeuChar OpenAI
Browse files Browse the repository at this point in the history
  • Loading branch information
JeffreySu committed May 7, 2023
1 parent 68d2df0 commit 4852149
Show file tree
Hide file tree
Showing 13 changed files with 84 additions and 17 deletions.
2 changes: 1 addition & 1 deletion Samples/Senparc.AI.Samples.Consoles/Samples/PlanSample.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public async Task RunAsync()
var planner = iWantToRun.ImportSkill(new PlannerSkill(iWantToRun.Kernel)).skillList;

var dir = System.IO.Directory.GetCurrentDirectory();
Console.WriteLine("dir:" + dir);
//Console.WriteLine("dir:" + dir);

var skillsDirectory = Path.Combine(dir, "..", "..", "..", "skills");
//Console.WriteLine("skillsDirectory:" + skillsDirectory);
Expand Down
6 changes: 5 additions & 1 deletion Samples/Senparc.AI.Samples.Consoles/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@
//Senparc.AI 设置
"SenparcAiSetting": {
"IsDebug": true,
"AiPlatform": "AzureOpenAI",
"AiPlatform": "NeuCharOpenAI",
"NeuCharOpenAIKeys": {
"ApiKey": "", //在 https://www.neuchar.com/Developer/AiApp 申请
"NeuCharEndpoint": "https://www.neuchar.com/<DeveloperId>/" //查看 ApiKey 时可看到 DeveloperId
},
"AzureOpenAIKeys": {
"ApiKey": "YourAzureApiKey", //TODO:加密
"AzureEndpoint": "https://xxxx.openai.azure.com/",
Expand Down
6 changes: 5 additions & 1 deletion Samples/Senparc.AI.Samples.Consoles/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@

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

在第一步中根据已有的 Skill 进行提供,如 SummarizeSkill,WriterSkill 等等。

第二步中直接提供 Plan 的目标。

## Embedding 测试素材

Expand All @@ -64,4 +69,3 @@ https://github.com/NeuCharFramework/NcfDocs/blob/main/start/home/index.md:::READ
https://github.com/NeuCharFramework/NcfDocs/blob/main/start/start-develop/get-docs.md:::获取文档,在线阅读官方文档,在 NCF 站点中进入官方文档,下载源码后使用 npm 本地运行,下载文档源码,运行 npm 命令
https://github.com/NeuCharFramework/NcfDocs/blob/main/start/start-develop/run-ncf.md:::使用 Visual Studio 运行 NCF
```

5 changes: 3 additions & 2 deletions src/Senparc.AI.Kernel.Tests/RegisterTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ public void KernelRegisterTest()
Assert.IsInstanceOfType(settings, typeof(SenparcAiSetting));
Assert.AreEqual(settings,Senparc.AI.Kernel.Config.SenparcAiSetting);

Assert.AreEqual(AiPlatform.AzureOpenAI, settings.AiPlatform);
Assert.AreEqual(true, settings.UseAzureOpenAI);
Assert.AreEqual(AiPlatform.NeuCharOpenAI, settings.AiPlatform);
Assert.AreEqual(false, settings.UseAzureOpenAI);
Assert.AreEqual(true, settings.UseNeuCharOpenAI);
}
}
}
4 changes: 4 additions & 0 deletions src/Senparc.AI.Kernel/Helpers/SemanticKernelHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@ public KernelBuilder ConfigTextCompletion(string userId, string modelName, Kerne

AiPlatform.AzureOpenAI => new AzureTextCompletion(modelName, AiSetting.AzureEndpoint, AiSetting.ApiKey, AiSetting.AzureOpenAIApiVersion),

AiPlatform.NeuCharOpenAI => new AzureTextCompletion(modelName, AiSetting.NeuCharEndpoint, AiSetting.ApiKey, AiSetting.AzureOpenAIApiVersion),

_ => throw new SenparcAiException($"没有处理当前 {nameof(AiPlatform)} 类型:{aiPlatForm}")
});
});
Expand Down Expand Up @@ -169,6 +171,8 @@ public KernelBuilder ConfigTextEmbeddingGeneration(string userId, string modelNa
{
AiPlatform.OpenAI => new OpenAITextEmbeddingGeneration(modelName, AiSetting.ApiKey, AiSetting.OrgaizationId),

AiPlatform.NeuCharOpenAI => new AzureTextEmbeddingGeneration(modelName, AiSetting.AzureEndpoint, AiSetting.ApiKey, AiSetting.NeuCharOpenAIApiVersion),

AiPlatform.AzureOpenAI => new AzureTextEmbeddingGeneration(modelName, AiSetting.AzureEndpoint, AiSetting.ApiKey, AiSetting.AzureOpenAIApiVersion),

_ => throw new SenparcAiException($"没有处理当前 {nameof(AiPlatform)} 类型:{aiPlatForm}")
Expand Down
4 changes: 2 additions & 2 deletions src/Senparc.AI.Kernel/Senparc.AI.Kernel.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Version>0.1.4.2-beta1</Version>
<Version>0.2.0-beta1</Version>
<Nullable>enable</Nullable>
<LangVersion>10.0</LangVersion>
<AssemblyName>Senparc.AI.Kernel</AssemblyName>
Expand All @@ -25,7 +25,7 @@
<PackageIcon>icon.jpg</PackageIcon>
<PackageReleaseNotes>
v0.1.0 创世

v0.2.0 添加 NeuChar OpenAI
</PackageReleaseNotes>
<RepositoryUrl>https://github.com/Senparc/Senparc.AI.Kernel</RepositoryUrl>
<Configurations>Debug;Release;Test</Configurations>
Expand Down
6 changes: 3 additions & 3 deletions src/Senparc.AI.Tests/RegisterTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ public void GlobalRegisterTest()
//本地变量测试
var senparcAiSetting = BaseTest._senparcAiSetting; // Senparc.AI.Config.SenparcAiSettings;
Assert.IsNotNull(senparcAiSetting);
Assert.AreEqual(AiPlatform.AzureOpenAI, senparcAiSetting.AiPlatform);
Assert.AreEqual(true, senparcAiSetting.UseAzureOpenAI);
Assert.IsFalse(senparcAiSetting.AzureEndpoint.IsNullOrEmpty());
Assert.AreEqual(AiPlatform.NeuCharOpenAI, senparcAiSetting.AiPlatform);
Assert.AreEqual(true, senparcAiSetting.UseNeuCharOpenAI);
Assert.IsFalse(senparcAiSetting.NeuCharEndpoint.IsNullOrEmpty());
Assert.IsFalse(senparcAiSetting.ApiKey.IsNullOrEmpty());
Assert.IsFalse(senparcAiSetting.OrgaizationId.IsNullOrEmpty());

Expand Down
6 changes: 5 additions & 1 deletion src/Senparc.AI.Tests/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@
//Senparc.AI 设置
"SenparcAiSetting": {
"IsDebug": true,
"AiPlatform": "AzureOpenAI",
"AiPlatform": "NeuCharOpenAI",
"NeuCharOpenAIKeys": {
"ApiKey": "", //在 https://www.neuchar.com/Developer/AiApp 申请
"NeuCharEndpoint": "https://www.neuchar.com/<DeveloperId>/" //查看 ApiKey 时可看到 DeveloperId
},
"AzureOpenAIKeys": {
"ApiKey": "YourAzureApiKey", //TODO:加密
"AzureEndpoint": "https://xxxx.openai.azure.com/",
Expand Down
10 changes: 10 additions & 0 deletions src/Senparc.AI/Entities/OpenAIKeys.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,14 @@ public class AzureOpenAIKeys
/// </summary>
public string AzureOpenAIApiVersion { get; set; } = "2022-12-01";
}

public class NeuCharOpenAIKeys
{
public string ApiKey { get; set; }
public string NeuCharEndpoint { get; set; }
/// <summary>
/// NeuCharOpenAIApiVersion,固定值
/// </summary>
public string NeuCharOpenAIApiVersion { get; set; } = "2022-12-01";
}
}
26 changes: 24 additions & 2 deletions src/Senparc.AI/Entities/SenparcAiSettingBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,28 @@ public class SenparcAiSettingBase : ISenparcAiSetting
/// </summary>
public virtual bool UseAzureOpenAI => AiPlatform == AiPlatform.AzureOpenAI;

/// <summary>
/// 是否使用 Azure OpenAI
/// </summary>
public virtual bool UseNeuCharOpenAI => AiPlatform == AiPlatform.NeuCharOpenAI;

/// <summary>
/// AI 平台类型
/// </summary>
public virtual AiPlatform AiPlatform { get; set; }

public virtual AzureOpenAIKeys AzureOpenAIKeys { get; set; }
public virtual OpenAIKeys OpenAIKeys { get; set; }
public virtual NeuCharOpenAIKeys NeuCharOpenAIKeys { get; set; }
public virtual AzureOpenAIKeys AzureOpenAIKeys { get; set; }

/// <summary>
/// Azure OpenAI 或 OpenAI API Key
/// </summary>
public virtual string ApiKey => AiPlatform switch
{
AiPlatform.AzureOpenAI => AzureOpenAIKeys.ApiKey,
AiPlatform.OpenAI => OpenAIKeys.ApiKey,
AiPlatform.NeuCharOpenAI => NeuCharOpenAIKeys.ApiKey,
AiPlatform.AzureOpenAI => AzureOpenAIKeys.ApiKey
};

/// <summary>
Expand All @@ -56,6 +63,21 @@ public class SenparcAiSettingBase : ISenparcAiSetting

#endregion


#region Azure OpenAI

/// <summary>
/// Azure OpenAI Endpoint
/// </summary>
public virtual string NeuCharEndpoint => NeuCharOpenAIKeys.NeuCharEndpoint;
/// <summary>
/// Azure OpenAI 版本号
/// </summary>
public virtual string NeuCharOpenAIApiVersion => NeuCharOpenAIKeys.NeuCharOpenAIApiVersion;

#endregion


public virtual bool IsOpenAiKeysSetted => OpenAIKeys != null && !OpenAIKeys.ApiKey.IsNullOrEmpty();

}
Expand Down
3 changes: 2 additions & 1 deletion src/Senparc.AI/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ public enum AiPlatform
UnSet = 0,
None = 1,
OpenAI = 2,
AzureOpenAI = 4
NeuCharOpenAI = 4,
AzureOpenAI = 8,
}

/// <summary>
Expand Down
19 changes: 18 additions & 1 deletion src/Senparc.AI/Interfaces/ISenparcAiSetting.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ public interface ISenparcAiSetting
/// </summary>
bool UseAzureOpenAI => AiPlatform == AiPlatform.AzureOpenAI;

/// <summary>
/// 是否使用 NeuChar OpenAI
/// </summary>
bool UseNeuCharOpenAI => AiPlatform == AiPlatform.NeuCharOpenAI;
/// <summary>
/// AI 平台类型
/// </summary>
Expand All @@ -31,7 +35,7 @@ public interface ISenparcAiSetting
OpenAIKeys OpenAIKeys { get; set; }

/// <summary>
/// Azure OpenAI 或 OpenAI API Key
/// Neuchar OpenAI 或 Azure OpenAI 或 OpenAI API Key
/// </summary>
string ApiKey { get; }

Expand All @@ -53,6 +57,19 @@ public interface ISenparcAiSetting

#endregion

#region Azure OpenAI

/// <summary>
/// NeuChar OpenAI Endpoint
/// </summary>
string NeuCharEndpoint { get; }
/// <summary>
/// Azure OpenAI 版本号
/// </summary>
string NeuCharOpenAIApiVersion { get; }

#endregion

/// <summary>
/// OpenAIKeys 是否已经设置
/// </summary>
Expand Down
4 changes: 2 additions & 2 deletions src/Senparc.AI/Senparc.AI.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Version>0.1.4.2-beta1</Version>
<Version>0.2.0-beta1</Version>
<Nullable>enable</Nullable>
<LangVersion>10.0</LangVersion>
<AssemblyName>Senparc.AI</AssemblyName>
Expand All @@ -25,7 +25,7 @@
<PackageIcon>icon.jpg</PackageIcon>
<PackageReleaseNotes>
v0.1.0 创世

v0.2.0 添加 NeuChar OpenAI
</PackageReleaseNotes>
<RepositoryUrl>https://github.com/Senparc/Senparc.AI</RepositoryUrl>
<Configurations>Debug;Release;Test</Configurations>
Expand Down

0 comments on commit 4852149

Please sign in to comment.