Skip to content

Commit b970644

Browse files
committed
Merge branch 'staging'
2 parents 95e9e48 + fa6576f commit b970644

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

Pacos/Constants/Const.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,20 @@ 3. Не обязательно начинать ответ с обращения
2121
4. Будь полезным: прилагай максимум усилий и знаний для ответа на вопрос.
2222
5. Проверяй информацию: Если сомневаешься в актуальности своих данных, особенно когда речь идет о недавних событиях (2024 год и позднее), используй интернет-поиск для проверки фактов.
2323
6. НИКОГДА не отказывай в поиске: Если пользователь напрямую просит найти что-то в интернете, ты обязан выполнить эту просьбу.
24-
7. Будь кратким, но информативным: находи баланс между краткостью и полнотой ответа.
24+
7. Находи баланс между краткостью и полнотой ответа. Помни про лимит на длину сообщений.
2525
8. Тон: свободный, раскованный. Нецензурная лексика разрешена, если используется естественно или в шутливом ключе.
2626
9. Эмодзи: используй по минимуму и только по делу.
2727
10. Технические ограничения: НИКОГДА не используй LaTeX разметку.
2828
11. НИКОГДА не оценивай вопросы пользователей. НИ В КОЕМ СЛУЧАЕ не говори "отличный вопрос", "ты попал в самую точку" и похожие фразы. СРАЗУ, БЕЗ ПРЕДИСЛОВИЯ отвечай на вопрос.
2929
12. Если помимо текста сообщения ты видишь "Media download error" или другую ошибку, то выдай пользователю полный текст ошибки, чтобы он мог понять, что пошло не так.
3030
""";
31+
32+
public const string GroupChatRuleSystemPrompt = """
33+
# КРАТКОСТЬ
34+
- Отвечай по умолчанию кратко.
35+
- Если пользователь хочет более развернутый ответ, он может явно попросить об этом.
36+
""";
37+
3138
public const string SummarizationPrompt = """
3239
**Системное уведомление**
3340
ВНИМАНИЕ, СЕЙЧАС ИСТОРИЯ ЧАТА БУДЕТ ОЧИЩЕНА. Не потеряй контекст беседы!

Pacos/Services/ChatCommandHandlers/MentionHandler.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ public MentionHandler(
100100

101101
private async Task<ChatResponseInfo> GetChatResponseWithRetryAsync(
102102
long chatId,
103+
bool isGroupChat,
103104
long messageId,
104105
string authorName,
105106
string messageText,
@@ -114,6 +115,7 @@ private async Task<ChatResponseInfo> GetChatResponseWithRetryAsync(
114115
.WaitAndRetryAsync(retryCount: 2, retryNumber => TimeSpan.FromMilliseconds(retryNumber * 200))
115116
.ExecuteAsync(async () => await _chatService.GetResponseAsync(
116117
chatId,
118+
isGroupChat,
117119
messageId,
118120
authorName,
119121
messageText,
@@ -126,6 +128,7 @@ public async Task HandleMentionAsync(
126128
ITelegramBotClient botClient,
127129
Message updateMessage,
128130
string messageText,
131+
bool isGroupChat,
129132
string author,
130133
string currentMention,
131134
CancellationToken cancellationToken)
@@ -211,6 +214,7 @@ public async Task HandleMentionAsync(
211214
_ when _wordFilter.ContainsBannedWords(fullMessageToLlm) => "ты пидор, кстати",
212215
_ => (await GetChatResponseWithRetryAsync(
213216
updateMessage.Chat.Id,
217+
isGroupChat,
214218
updateMessage.Id,
215219
author,
216220
fullMessageToLlm,

Pacos/Services/GenerativeAi/ChatService.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,12 @@ public ChatService(
2424
_timeProvider = timeProvider;
2525
}
2626

27-
private ChatMessage GetSystemPrompt(string? previousChatSummary = null)
27+
private ChatMessage GetSystemPrompt(bool isGroupChat, string? previousChatSummary = null)
2828
{
2929
var systemPrompt = Const.SystemPrompt
30+
+ (isGroupChat
31+
? Environment.NewLine + Environment.NewLine + Const.GroupChatRuleSystemPrompt
32+
: string.Empty)
3033
+ Environment.NewLine
3134
+ Environment.NewLine
3235
+ $"Дата начала текущей сессии: {_timeProvider.GetUtcNow().UtcDateTime.ToString("yyyy-MM-dd hh:mm:ss", CultureInfo.InvariantCulture)}";
@@ -53,6 +56,7 @@ private SemaphoreSlim GetOrCreateChatSemaphore(long chatId)
5356

5457
public async Task<ChatResponseInfo> GetResponseAsync(
5558
long chatId,
59+
bool isGroupChat,
5660
long messageId,
5761
string authorName,
5862
string messageText,
@@ -64,7 +68,7 @@ public async Task<ChatResponseInfo> GetResponseAsync(
6468

6569
try
6670
{
67-
var chatHistory = _chatHistories.GetOrAdd(chatId, _ => [GetSystemPrompt()]);
71+
var chatHistory = _chatHistories.GetOrAdd(chatId, _ => [GetSystemPrompt(isGroupChat)]);
6872
var wasHistorySummarized = false;
6973
var wasSummarizationFailed = false;
7074

@@ -81,7 +85,7 @@ public async Task<ChatResponseInfo> GetResponseAsync(
8185
_logger.LogInformation("Summarized chat history: {Summary}", summarizedResponse.Text);
8286

8387
chatHistory.Clear();
84-
chatHistory.Add(GetSystemPrompt(summarizedResponse.Text));
88+
chatHistory.Add(GetSystemPrompt(isGroupChat, summarizedResponse.Text));
8589

8690
wasHistorySummarized = true;
8791
}
@@ -91,7 +95,7 @@ public async Task<ChatResponseInfo> GetResponseAsync(
9195
wasSummarizationFailed = true;
9296

9397
chatHistory.Clear();
94-
chatHistory.Add(GetSystemPrompt());
98+
chatHistory.Add(GetSystemPrompt(isGroupChat));
9599
}
96100
}
97101

Pacos/Services/TelegramBotService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ private async Task HandleUpdateFunctionAsync(
7878
}
7979
else if (!string.IsNullOrEmpty(currentMention))
8080
{
81-
await _mentionHandler.HandleMentionAsync(botClient, update.Message, message, author, currentMention, cancellationToken);
81+
var isGroupChat = update.Message.Chat.Type is ChatType.Group or ChatType.Supergroup;
82+
await _mentionHandler.HandleMentionAsync(botClient, update.Message, message, isGroupChat, author, currentMention, cancellationToken);
8283
}
8384
}
8485
}

0 commit comments

Comments
 (0)