Skip to content

Commit edf9b6b

Browse files
authored
Merge pull request #3009 from JeffreySu/Developer
Developer
2 parents 1ad36e9 + 75dc6b4 commit edf9b6b

File tree

4 files changed

+18
-14
lines changed

4 files changed

+18
-14
lines changed

Samples with AI/readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ AI 功能将整合在 [/Samples/All/net8-mvc](../Samples/All/net8-mvc/Senparc.We
3636
3737
其中 `StartAIChatAsync()` 用于激活当前用户对话山下文的 AI 对话状态
3838

39-
> [查看代码](https://github.com/JeffreySu/WeiXinMPSDK/blob/f28a5995b3e5f01b3be384b5c7462324ec6f0886/Samples/All/Senparc.Weixin.Sample.CommonService/AI/MessageHandlers/CustomMessageHandler_AI.cs#L41-L41)
39+
> [查看代码](https://github.com/JeffreySu/WeiXinMPSDK/blob/d721b118b036b6f37d2cf4e932fb954653eba667/Samples/All/Senparc.Weixin.Sample.CommonService/AI/MessageHandlers/CustomMessageHandler_AI.cs#L70-L70)
4040
4141

4242
3. 为了能够让系统优先判断当前是否在 AI 状态,需要在上述代码执行前,加入尝试 AI 对话的代码,如:
@@ -53,7 +53,7 @@ if (aiResponseMessage != null)
5353
5454
其中 `AIChatAsync()` 方法用于提供尝试向 AI 发送对话消息的业务逻辑(如果不在对话状态则返回 null,程序继续执行常规代码)
5555

56-
> [查看代码](https://github.com/JeffreySu/WeiXinMPSDK/blob/f28a5995b3e5f01b3be384b5c7462324ec6f0886/Samples/All/Senparc.Weixin.Sample.CommonService/AI/MessageHandlers/CustomMessageHandler_AI.cs#L41-L41)
56+
> [查看代码](https://github.com/JeffreySu/WeiXinMPSDK/blob/d721b118b036b6f37d2cf4e932fb954653eba667/Samples/All/Senparc.Weixin.Sample.CommonService/AI/MessageHandlers/CustomMessageHandler_AI.cs#L43-L43)
5757
5858
4. 配置 AI 参数,请参考 `Senparc.AI 【开发过程】第一步:配置账号`,在 appsettings.json 文件中追加 ”SenparcAiSetting“ 节点([查看](https://github.com/Senparc/Senparc.AI/blob/main/README.md#%E7%AC%AC%E4%B8%80%E6%AD%A5%E9%85%8D%E7%BD%AE%E8%B4%A6%E5%8F%B7))(注意:通常只需设置其中一种平台的配置)
5959

Samples/All/Senparc.Weixin.Sample.CommonService/AI/MessageHandlers/CustomMessageHandler_AI.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ private async Task<IResponseMessageBase> AIChatAsync(RequestMessageBase requestM
7777
}
7878

7979
ChatStore chatStore;
80-
80+
8181
try
8282
{
8383
chatStore = chatJson.GetObject<ChatStore>();
@@ -96,17 +96,19 @@ private async Task<IResponseMessageBase> AIChatAsync(RequestMessageBase requestM
9696
if (requestMessage is RequestMessageText requestMessageText)
9797
{
9898
string prompt;
99+
bool storeHistory = true;
99100

100101
if (requestMessageText.Content.Equals("E", StringComparison.OrdinalIgnoreCase))
101102
{
102103
prompt = $"我即将结束对话,请发送一段文字和我告别,并提醒我:输入“AI”可以再次启动对话。";
104+
storeHistory = false;
103105

104106
//消除状态记录
105107
await UpdateMessageContext(currentMessageContext, null);
106108
}
107109
else if (requestMessageText.Content.Equals("P", StringComparison.OrdinalIgnoreCase))
108110
{
109-
prompt = $"我即将临时暂停对话,请发送一段文字和我告别,并提醒我:输入“AI”可以再次启动对话。请记住,下次启动会话时,发送再次欢迎我回来的信息。";
111+
prompt = $"我即将临时暂停对话,当下次启动会话时,发送再次欢迎我回来的信息。本次请发送一段文字和我告别,并提醒我:输入“AI”可以再次启动对话。";
110112

111113
// 修改状态记录
112114
chatStore.Status = ChatStatus.Paused;
@@ -168,10 +170,12 @@ private async Task<IResponseMessageBase> AIChatAsync(RequestMessageBase requestM
168170

169171
#endregion
170172

171-
172173
//保存历史记录
173-
chatStore.History = iWantToRun.StoredAiArguments.Context["history"]?.ToString();
174-
await UpdateMessageContext(currentMessageContext, chatStore);
174+
if (storeHistory)
175+
{
176+
chatStore.History = iWantToRun.StoredAiArguments.Context["history"]?.ToString();
177+
await UpdateMessageContext(currentMessageContext, chatStore);
178+
}
175179

176180
//组织返回消息
177181
var responseMessage = base.CreateResponseMessage<ResponseMessageText>();
@@ -198,7 +202,7 @@ private async Task<IResponseMessageBase> AIChatAsync(RequestMessageBase requestM
198202

199203
private async Task UpdateMessageContext(CustomMessageContext currentMessageContext, ChatStore chatStore)
200204
{
201-
currentMessageContext.StorageData = chatStore==null?null : chatStore.ToJson();
205+
currentMessageContext.StorageData = chatStore == null ? null : chatStore.ToJson();
202206
await GlobalMessageContext.UpdateMessageContextAsync(currentMessageContext);//储存到缓存
203207
}
204208
}

Samples/All/Senparc.Weixin.Sample.CommonService/MessageHandlers/CustomMessageHandler/CustomMessageHandler_Events.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,11 @@ public override IResponseMessageBase OnEvent_ClickRequest(RequestMessageEvent_Cl
147147

148148
switch (requestMessage.EventKey)
149149
{
150+
case "AI":
151+
{
152+
reponseMessage = this.StartAIChatAsync().Result;
153+
}
154+
break;
150155
case "OneClick":
151156
{
152157
//这个过程实际已经在OnTextOrEventRequest中命中“OneClick”关键字,并完成回复,这里不会执行到。

Samples/All/net8-mvc/Senparc.Weixin.Sample.Net8/Senparc.Weixin.Sample.net8.csproj

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
<ProjectReference Include="..\..\Senparc.Weixin.Sample.CommonService\Senparc.Weixin.Net8Sample.CommonService.csproj" />
5353
</ItemGroup>
5454

55-
<ItemGroup>
55+
<ItemGroup Condition="'$(Configuration)' == 'Release'">
5656
<None Update="App_Data\Document\Config.xml">
5757
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
5858
</None>
@@ -76,11 +76,6 @@
7676
</None>
7777
</ItemGroup>
7878

79-
<ItemGroup Condition="'$(Configuration)' == 'Release'">
80-
<!-- 忽略 Web.config 文件,仅在发布时 -->
81-
82-
</ItemGroup>
83-
8479
<ItemGroup>
8580
<Folder Include="App_Data\NeuChar\" />
8681
<Folder Include="wwwroot\" />

0 commit comments

Comments
 (0)