Copilot fixes + new intermediate_step

This commit is contained in:
2025-10-23 15:48:38 +02:00
parent 49a3c84350
commit 74f6b2572b
2 changed files with 23 additions and 18 deletions

View File

@@ -160,14 +160,19 @@ class RunMessage:
def update(self) -> 'RunMessage': def update(self) -> 'RunMessage':
text_curr, state_curr = self.steps_total[self.current] text_curr, state_curr = self.steps_total[self.current]
self.steps_total[self.current] = (text_curr, state_curr + 1) self.steps_total[self.current] = (text_curr, state_curr + 1)
self.current += 1 self.current = min(self.current + 1, len(self.steps_total))
if self.current < len(self.steps_total): if self.current < len(self.steps_total):
text_curr, state_curr = self.steps_total[self.current] text_curr, state_curr = self.steps_total[self.current]
self.steps_total[self.current] = (text_curr, state_curr + 1) self.steps_total[self.current] = (text_curr, state_curr + 1)
return self return self
def get_latest(self, extra: str = "") -> str: def update_step(self, text_extra: str = "") -> 'RunMessage':
text_curr, state_curr = self.steps_total[self.current]
if text_extra:
text_curr = f"{text_curr.replace('', '')}\n╚═ {text_extra}"
self.steps_total[self.current] = (text_curr, state_curr)
return self
def get_latest(self) -> str:
steps = [msg.replace(self.placeholder, self.emojis[state]) for msg, state in self.steps_total] steps = [msg.replace(self.placeholder, self.emojis[state]) for msg, state in self.steps_total]
if extra:
steps[self.current] = f"{steps[self.current]}: {extra}"
return self.base_message + "\n".join(steps) return self.base_message + "\n".join(steps)

View File

@@ -52,16 +52,14 @@ class ConfigsChat(Enum):
return InlineKeyboardButton(display, callback_data=self.name) return InlineKeyboardButton(display, callback_data=self.name)
def change_value(self, inputs: PipelineInputs, new_value:int) -> None: def change_value(self, inputs: PipelineInputs, new_value:int) -> None:
if self.name == self.MODEL_CHECK.name: functions_map = {
inputs.choose_query_checker(new_value) self.MODEL_CHECK.name: inputs.choose_query_checker,
elif self.name == self.MODEL_TEAM_LEADER.name: self.MODEL_TEAM_LEADER.name: inputs.choose_team_leader,
inputs.choose_team_leader(new_value) self.MODEL_TEAM.name: inputs.choose_team,
elif self.name == self.MODEL_TEAM.name: self.MODEL_REPORT.name: inputs.choose_report_generator,
inputs.choose_team(new_value) self.STRATEGY.name: inputs.choose_strategy,
elif self.name == self.MODEL_REPORT.name: }
inputs.choose_report_generator(new_value) functions_map[self.name](new_value)
elif self.name == self.STRATEGY.name:
inputs.choose_strategy(new_value)
class TelegramApp: class TelegramApp:
@@ -272,9 +270,11 @@ class TelegramApp:
# Remove user query and bot message # Remove user query and bot message
await bot.delete_message(chat_id=chat_id, message_id=update.message.id) await bot.delete_message(chat_id=chat_id, message_id=update.message.id)
def update_user(update: bool = True, extra: str = "") -> None: def update_user(update_step: str = "") -> None:
if update: run_message.update() if update_step: run_message.update_step(update_step)
message = run_message.get_latest(extra) else: run_message.update()
message = run_message.get_latest()
if msg.text != message: if msg.text != message:
asyncio.create_task(msg.edit_text(message, parse_mode='MarkdownV2')) asyncio.create_task(msg.edit_text(message, parse_mode='MarkdownV2'))
@@ -282,7 +282,7 @@ class TelegramApp:
pipeline = Pipeline(inputs) pipeline = Pipeline(inputs)
report_content = await pipeline.interact_async(listeners=[ report_content = await pipeline.interact_async(listeners=[
(PipelineEvent.QUERY_CHECK, lambda _: update_user()), (PipelineEvent.QUERY_CHECK, lambda _: update_user()),
(PipelineEvent.TOOL_USED, lambda e: update_user(False, f"`{e.agent_name} {e.tool.tool_name}`")), (PipelineEvent.TOOL_USED, lambda e: update_user(e.tool.tool_name.replace('get_', '').replace("_", "\\_"))),
(PipelineEvent.INFO_RECOVERY, lambda _: update_user()), (PipelineEvent.INFO_RECOVERY, lambda _: update_user()),
(PipelineEvent.REPORT_GENERATION, lambda _: update_user()), (PipelineEvent.REPORT_GENERATION, lambda _: update_user()),
]) ])