mirror of
https://github.com/MervinPraison/PraisonAI.git
synced 2026-11-08 01:08:39 -10:00
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
"""Withhold account details at the final bot delivery boundary.
|
|
|
|
Install praisonaiagents and praisonai-bot, set OPENAI_API_KEY, then run this file.
|
|
This gate covers final bot replies; disable progressive drafts when using an
|
|
output policy. Direct transport sends do not pass through this hook.
|
|
"""
|
|
|
|
import asyncio
|
|
|
|
from praisonai_bot.bots import LocalBot
|
|
from praisonaiagents import Agent, HooksConfig
|
|
from praisonaiagents.hooks import HookRegistry
|
|
from praisonaiagents.plugins.manager import PluginManager
|
|
from praisonaiagents.plugins.plugin import Plugin, PluginDecision, PluginInfo
|
|
|
|
|
|
class AccountPolicy(Plugin):
|
|
@property
|
|
def info(self):
|
|
return PluginInfo(name="account_policy")
|
|
|
|
def after_message(self, message):
|
|
if "account number" in message["content"].lower():
|
|
return PluginDecision.block("Account details must not be sent to this channel")
|
|
return message
|
|
|
|
|
|
async def main():
|
|
manager = PluginManager()
|
|
manager.register(AccountPolicy())
|
|
# Conversation access must be explicitly granted to third-party plugins.
|
|
manager.set_plugin_options({"account_policy": {"allow_conversation": True}})
|
|
registry = HookRegistry()
|
|
manager.wire_into_hook_registry(registry)
|
|
with Agent(
|
|
instructions="Answer briefly.", output="silent", reflection=False,
|
|
hooks=HooksConfig(registry=registry),
|
|
) as agent:
|
|
await LocalBot(agent=agent).start()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|