Commit c7bdcf7
Changed files (3)
src
src/llm/gpt.py
@@ -97,7 +97,7 @@ async def gpt_response(client: Client, message: Message, *, gpt_stream: bool = G
config, response = await merge_tools_response(config, **kwargs)
# skip send a new request if tool_model is the same as the current model
if response and config["completions"]["model"] == GPT.TOOLS_MODEL and response.get("content"):
- texts = f"🤖**{response['model']}**: ({BOT_TIPS})\n\n{response['content']}"
+ texts = f"🤖**{config['friendly_name']}**: ({BOT_TIPS})\n\n{response['content']}"
length = await count_without_entities(texts)
if length <= TEXT_LENGTH:
await modify_progress(message=status_msg, text=texts, force_update=True, **kwargs)
src/llm/summary.py
@@ -60,7 +60,7 @@ HELP = f"""🤖**GPT总结历史消息** (最多{MAX_MESSAGE_SUMMARY}条)
- 3️⃣的时间格式中没有任何分隔符, 必须为YYYYMMDDHHMMSS (14位纯数字)
"""
DAILY_SUMMARY_PREFIX = "🏪**#爬楼助手**\n"
-CONTEXT_FILENAME = "聊天记录上下文.txt"
+CONTEXT_FILENAME = "聊天记录.txt"
async def ai_summary(client: Client, message: Message, summary_prefix: str | None = None, **kwargs):
@@ -127,9 +127,6 @@ async def ai_summary(client: Client, message: Message, summary_prefix: str | Non
await send2tg(client, message, texts=f"{num_history}条历史消息中未找到符合条件的消息", **kwargs)
await modify_progress(del_status=True, **kwargs)
return
- # send contexts as txt file
- with io.BytesIO(parsed["txt_format"].encode("utf-8")) as f:
- await client.send_document(to_int(message.chat.id), f, file_name=CONTEXT_FILENAME)
contexts = refine_prompts(parsed["system_context"] + [{"role": "user", "content": parsed["user_context"]}])
sysmtem_tokens = count_tokens(contexts[0]["content"])
user_tokens = count_tokens(contexts[-1]["content"])
@@ -142,12 +139,14 @@ async def ai_summary(client: Client, message: Message, summary_prefix: str | Non
summary_model = GPT.LONG_MODEL
summary_model_name = GPT.LONG_MODEL_NAME
max_tokens = int(GPT.LONG_MODEL_MAX_OUTPUT_LENGTH)
- msg = f"🤖**{summary_model_name}**总结中...\n"
- msg += f"⏩开始时间: {begin_time:%m-%d %H:%M:%S}\n"
- msg += f"⏯️结束时间: {end_time:%m-%d %H:%M:%S}\n"
- msg += f"🔢有效消息: {len(parsed['user_context'])}\n"
- msg += f"🔠总Token: {total_tokens}"
- await modify_progress(text=msg, force_update=True, **kwargs)
+ msg = f"⏩开始时间: {parsed['begin_time']:%m-%d %H:%M:%S}\n"
+ msg += f"⏯️结束时间: {parsed['end_time']:%m-%d %H:%M:%S}\n"
+ msg += f"🔢消息条数: {len(parsed['user_context'])}\n"
+ msg += f"🔠Token数: {total_tokens}"
+ # send contexts as txt file
+ with io.BytesIO(parsed["txt_format"].encode("utf-8")) as f:
+ await client.send_document(to_int(message.chat.id), f, file_name=CONTEXT_FILENAME, caption=msg)
+ await modify_progress(text=f"🤖**{summary_model_name}**总结中...\n{msg}", force_update=True, **kwargs)
config = get_gpt_config(model_type="text", contexts=contexts, force_model=summary_model)
# set max_tokens for the model
@@ -237,7 +236,7 @@ async def get_contexts(history: list[dict]) -> dict:
"username": info["full_name"],
"message": info["text"],
}
- txt_format += f"[{content['time']}]{content['username']}:\n"
+ txt_format += f"[{info['datetime']:%m-%d %H:%M:%S}]{content['username']}:\n"
if reply_msg_content := get_message_by_id(history, info.get("reply_to_message_id")):
content["reply_to_message"] = reply_msg_content
txt_format += f"<quote>{reply_msg_content['username']}: {reply_msg_content['message']}</quote>\n"
src/config.py
@@ -19,8 +19,8 @@ TEXT_LENGTH = int(os.getenv("TEXT_LENGTH", "4096")) # Maximum length of text me
CAPTION_LENGTH = int(os.getenv("CAPTION_LENGTH", "1024")) # 4096 for Premium user
MAX_FILE_BYTES = int(os.getenv("MAX_FILE_BYTES", "2000")) * 1024 * 1024 # 4000 MB for Premium user
ASR_MAX_DURATION = int(os.getenv("ASR_MAX_DURATION", "600"))
-MAX_MESSAGE_RETRIEVED = int(os.getenv("MAX_MESSAGE_RETRIEVED", "5000")) # Maximum number of messages to combine
-MAX_MESSAGE_SUMMARY = int(os.getenv("MAX_MESSAGE_SUMMARY", "5000")) # Maximum number of messages to summay
+MAX_MESSAGE_RETRIEVED = int(os.getenv("MAX_MESSAGE_RETRIEVED", "1000000")) # Maximum number of messages to combine
+MAX_MESSAGE_SUMMARY = int(os.getenv("MAX_MESSAGE_SUMMARY", "9999")) # Maximum number of messages to summay
READING_SPEED = int(os.getenv("READING_SPEED", "300")) # words per minute
DAILY_MESSAGES = os.getenv("DAILY_MESSAGES", "{}") # Useful for daily checkin for some services. Should be a json string: '{"chat-1": "msg-1", "chat-2": "msg-2"}'
# For ytdlp downloaded video, re-encoding to H264 format. This set the max file size for re-encoding. Default: 1PB