Copilot fixes + new intermediate_step
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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()),
|
||||||
])
|
])
|
||||||
|
|||||||
Reference in New Issue
Block a user