mirror of
https://github.com/microsoft/autogen.git
synced 2025-07-22 16:31:47 +00:00
34 lines
1.4 KiB
Python
34 lines
1.4 KiB
Python
![]() |
from agnext.components import TypeRoutedAgent, message_handler
|
||
|
from agnext.components.models import ChatCompletionClient
|
||
|
from agnext.components.models._types import SystemMessage
|
||
|
from agnext.core import CancellationToken
|
||
|
from messages import AuditorAlert, AuditText
|
||
|
|
||
|
auditor_prompt = """You are an Auditor in a Marketing team
|
||
|
Audit the text bello and make sure we do not give discounts larger than 10%
|
||
|
If the text talks about a larger than 10% discount, reply with a message to the user saying that the discount is too large, and by company policy we are not allowed.
|
||
|
If the message says who wrote it, add that information in the response as well
|
||
|
In any other case, reply with NOTFORME
|
||
|
---
|
||
|
Input: {input}
|
||
|
---
|
||
|
"""
|
||
|
|
||
|
|
||
|
class AuditAgent(TypeRoutedAgent):
|
||
|
def __init__(
|
||
|
self,
|
||
|
model_client: ChatCompletionClient,
|
||
|
) -> None:
|
||
|
super().__init__("")
|
||
|
self._model_client = model_client
|
||
|
|
||
|
@message_handler
|
||
|
async def handle_user_chat_input(self, message: AuditText, cancellation_token: CancellationToken) -> None:
|
||
|
sys_prompt = auditor_prompt.format(input=message.text)
|
||
|
completion = await self._model_client.create(messages=[SystemMessage(content=sys_prompt)])
|
||
|
assert isinstance(completion.content, str)
|
||
|
if "NOTFORME" in completion.content:
|
||
|
return
|
||
|
await self.publish_message(AuditorAlert(user_id=message.user_id, auditor_alert_message=completion.content))
|