Spaces:
Sleeping
Sleeping
File size: 84,448 Bytes
cf7fac2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 |
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Minerva: AI Guardian for Scam Protection"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook implements a multi-agent system for analyzing images (screenshots) to identify scam attempts, and provide personalized scam prevention. It uses [AutoGen](https://github.com/microsoft/autogen/) to orchestrate various specialized agents that work together.\n",
"\n",
"Benefits:\n",
"- Automates the process of identifying suspicious scam patterns.\n",
"- Prevents Financial Loss\n",
"- Saves Time: Early scam detection reduces the number of claims filed by end-users."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Install Dependencies"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Note: you may need to restart the kernel to use updated packages.\n"
]
}
],
"source": [
"%pip install -q autogen-agentchat==0.4.0.dev11 autogen-ext[openai]==0.4.0.dev11 pillow pytesseract pyyaml "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Model Initialization"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"from dotenv import load_dotenv, find_dotenv\n",
"from autogen_ext.models.openai import OpenAIChatCompletionClient\n",
"\n",
"load_dotenv(find_dotenv())\n",
"\n",
"model = OpenAIChatCompletionClient(\n",
" model=\"gpt-4o\",\n",
" api_key=os.getenv(\"OPENAI_API_KEY\")\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Tools Creation"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from autogen_core.tools import FunctionTool\n",
"from tools import Tools\n",
"\n",
"tools = Tools()\n",
"\n",
"ocr_tool = FunctionTool(\n",
" tools.ocr, description=\"Extracts text from an image path\"\n",
")\n",
"\n",
"url_checker_tool = FunctionTool(\n",
" tools.is_url_safe, description=\"Checks if a URL is safe\"\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Agents Creation"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import yaml\n",
"\n",
"with open('config/agents.yaml', 'r') as file:\n",
" config = yaml.safe_load(file)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"from autogen_agentchat.agents import AssistantAgent\n",
"from autogen_agentchat.teams import RoundRobinGroupChat\n",
"\n",
"ocr_agent = AssistantAgent(\n",
" name=\"OCR_Specialist\",\n",
" description=\"Extracts text from an image\",\n",
" system_message=config['ocr_agent']['assignment'],\n",
" model_client=model,\n",
" tools=[ocr_tool]\n",
")\n",
"\n",
"content_agent = AssistantAgent(\n",
" name=\"Content_Analyst\",\n",
" description=\"Analyzes the text for scam patterns\",\n",
" system_message=config['content_agent']['assignment'],\n",
" model_client=model,\n",
" tools=[url_checker_tool]\n",
")\n",
"\n",
"decision_agent = AssistantAgent(\n",
" name=\"Decision_Maker\",\n",
" description=\"Synthesizes the analyses and make final determination\",\n",
" system_message=config['decision_agent']['assignment'],\n",
" model_client=model\n",
")\n",
"\n",
"summary_agent = AssistantAgent(\n",
" name=\"Summary_Agent\",\n",
" description=\"Generate a summary of the final determination\",\n",
" system_message=config['summary_agent']['assignment'],\n",
" model_client=model\n",
")\n",
"\n",
"language_translation_agent = AssistantAgent(\n",
" name=\"Language_Translation_Agent\",\n",
" description=\"Translate the summary to the user language, which is the language of the extracted text\",\n",
" system_message=config['language_translation_agent']['assignment'],\n",
" model_client=model\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Team Creation"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"team = RoundRobinGroupChat([ocr_agent, content_agent, decision_agent, summary_agent, language_translation_agent], max_turns=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Running the Team"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"from IPython.display import Image as IPImage\n",
"from IPython.display import display"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"image_path = \"./samples/02.giftcard.message.scam.png\"\n",
"display(IPImage(filename=image_path))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"image_path = \"./samples/scam.spanish.png\"\n",
"display(IPImage(filename=image_path))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# team.reset()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"stream = team.run_stream(task=f\"\"\"does the content of the image in {image_path} represent a scam?\"\"\")"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"---------- user ----------\n",
"does the content of the image in ./samples/scam.spanish.png represent a scam?\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"---------- OCR_Specialist ----------\n",
"[FunctionCall(id='call_ju9AZzgXO6qVwArvaK0BykI9', arguments='{\"image_path\":\"./samples/scam.spanish.png\"}', name='ocr')]\n",
"[Prompt tokens: 116, Completion tokens: 21]\n",
"---------- OCR_Specialist ----------\n",
"[FunctionExecutionResult(content='Enhorabuena!\\nHas ganado una tarjeta de Amazon de 200 EUR.\\nVisita ahora http://bit.ly/4874|\\n\\x0c', call_id='call_ju9AZzgXO6qVwArvaK0BykI9')]\n",
"---------- OCR_Specialist ----------\n",
"Enhorabuena!\n",
"Has ganado una tarjeta de Amazon de 200 EUR.\n",
"Visita ahora http://bit.ly/4874|\n",
"\f\n",
"---------- Content_Analyst ----------\n",
"[FunctionCall(id='call_5G9R8qhWyTbTODkzOmQOhHSA', arguments='{\"target_url\": \"http://bit.ly/4874\"}', name='is_url_safe')]\n",
"[Prompt tokens: 187, Completion tokens: 38]\n",
"---------- Content_Analyst ----------\n",
"[FunctionExecutionResult(content='(True, [])', call_id='call_5G9R8qhWyTbTODkzOmQOhHSA')]\n",
"---------- Content_Analyst ----------\n",
"(True, [])\n",
"---------- Decision_Maker ----------\n",
"The content extracted from the image you provided is highly indicative of a scam. Here's the analysis that supports this determination:\n",
"\n",
"1. **Unsolicited Prize Notification**: The message claims that the recipient has won a 200 EUR Amazon gift card without any prior participation in a contest or giveaway. Scammers often use such tactics to lure individuals by appealing to their desire for free rewards.\n",
"\n",
"2. **Urgency and Call to Action**: The message includes a directive to \"visit now\" a shortened URL (http://bit.ly/4874|). The use of urgency and shortened links are common in scams. Shortened URLs can obscure the final destination, making it easier to hide malicious sites or phishing attempts.\n",
"\n",
"3. **Language and Formatting**: The message uses simple language, which is consistent with many scams that try to reach a broad audience. In professional or legitimate communications, companies like Amazon typically provide detailed information about any prize, including conditions for participation.\n",
"\n",
"4. **Third-Party URL Shortener**: Bit.ly is a legitimate service for shortening URLs, but it is also frequently used in scams to hide malicious links. Legitimate promotions from major companies will often use official company domains.\n",
"\n",
"5. **Lack of Verification Marks**: The message does not include any sign of verification or contact information that would typically accompany legitimate communications from a brand like Amazon. Official messages usually include customer service contact details and verification checks to assure recipients of their authenticity.\n",
"\n",
"Considering these points, the probability of this being a scam is very high. Recipients should be advised not to click on the link, share personal information, or engage further with this communication. It is recommended to report such messages to the appropriate authorities or the company that is being impersonated.\n",
"[Prompt tokens: 114, Completion tokens: 350]\n",
"---------- Summary_Agent ----------\n",
"The message extracted from the image is very likely a scam for several reasons. It claims the recipient has won a 200 EUR Amazon gift card without prior notification or conditions, uses urgency with a \"visit now\" prompt, and incorporates a shortened URL that obscures the real destination—common techniques in scams. Legitimate offers from companies like Amazon detail participation conditions and use verified, official links. Recipients should avoid clicking the link or sharing personal information and are advised to report such messages to authorities or the impersonated company. COMPLETE\n",
"[Prompt tokens: 524, Completion tokens: 105]\n",
"---------- Language_Translation_Agent ----------\n",
"El mensaje extraído de la imagen es muy probablemente una estafa por varias razones. Afirma que el destinatario ha ganado una tarjeta de regalo de Amazon por 200 EUR sin notificación previa ni condiciones, usa urgencia con un mensaje de \"visita ahora\" e incorpora un URL acortado que oculta el destino real, técnicas comunes en estafas. Las ofertas legítimas de empresas como Amazon detallan las condiciones de participación y utilizan enlaces oficiales y verificados. Se aconseja a los destinatarios que eviten hacer clic en el enlace o compartir información personal y que informen sobre dichos mensajes a las autoridades o a la empresa suplantada.\n",
"[Prompt tokens: 614, Completion tokens: 134]\n",
"---------- Summary ----------\n",
"Number of messages: 10\n",
"Finish reason: Maximum number of turns 5 reached.\n",
"Total prompt tokens: 1555\n",
"Total completion tokens: 648\n",
"Duration: 14.00 seconds\n"
]
},
{
"data": {
"text/plain": [
"TaskResult(messages=[TextMessage(source='user', models_usage=None, content='does the content of the image in ./samples/scam.spanish.png represent a scam?', type='TextMessage'), ToolCallMessage(source='OCR_Specialist', models_usage=RequestUsage(prompt_tokens=116, completion_tokens=21), content=[FunctionCall(id='call_ju9AZzgXO6qVwArvaK0BykI9', arguments='{\"image_path\":\"./samples/scam.spanish.png\"}', name='ocr')], type='ToolCallMessage'), ToolCallResultMessage(source='OCR_Specialist', models_usage=None, content=[FunctionExecutionResult(content='Enhorabuena!\\nHas ganado una tarjeta de Amazon de 200 EUR.\\nVisita ahora http://bit.ly/4874|\\n\\x0c', call_id='call_ju9AZzgXO6qVwArvaK0BykI9')], type='ToolCallResultMessage'), TextMessage(source='OCR_Specialist', models_usage=None, content='Enhorabuena!\\nHas ganado una tarjeta de Amazon de 200 EUR.\\nVisita ahora http://bit.ly/4874|\\n\\x0c', type='TextMessage'), ToolCallMessage(source='Content_Analyst', models_usage=RequestUsage(prompt_tokens=187, completion_tokens=38), content=[FunctionCall(id='call_5G9R8qhWyTbTODkzOmQOhHSA', arguments='{\"target_url\": \"http://bit.ly/4874\"}', name='is_url_safe')], type='ToolCallMessage'), ToolCallResultMessage(source='Content_Analyst', models_usage=None, content=[FunctionExecutionResult(content='(True, [])', call_id='call_5G9R8qhWyTbTODkzOmQOhHSA')], type='ToolCallResultMessage'), TextMessage(source='Content_Analyst', models_usage=None, content='(True, [])', type='TextMessage'), TextMessage(source='Decision_Maker', models_usage=RequestUsage(prompt_tokens=114, completion_tokens=350), content='The content extracted from the image you provided is highly indicative of a scam. Here\\'s the analysis that supports this determination:\\n\\n1. **Unsolicited Prize Notification**: The message claims that the recipient has won a 200 EUR Amazon gift card without any prior participation in a contest or giveaway. Scammers often use such tactics to lure individuals by appealing to their desire for free rewards.\\n\\n2. **Urgency and Call to Action**: The message includes a directive to \"visit now\" a shortened URL (http://bit.ly/4874|). The use of urgency and shortened links are common in scams. Shortened URLs can obscure the final destination, making it easier to hide malicious sites or phishing attempts.\\n\\n3. **Language and Formatting**: The message uses simple language, which is consistent with many scams that try to reach a broad audience. In professional or legitimate communications, companies like Amazon typically provide detailed information about any prize, including conditions for participation.\\n\\n4. **Third-Party URL Shortener**: Bit.ly is a legitimate service for shortening URLs, but it is also frequently used in scams to hide malicious links. Legitimate promotions from major companies will often use official company domains.\\n\\n5. **Lack of Verification Marks**: The message does not include any sign of verification or contact information that would typically accompany legitimate communications from a brand like Amazon. Official messages usually include customer service contact details and verification checks to assure recipients of their authenticity.\\n\\nConsidering these points, the probability of this being a scam is very high. Recipients should be advised not to click on the link, share personal information, or engage further with this communication. It is recommended to report such messages to the appropriate authorities or the company that is being impersonated.', type='TextMessage'), TextMessage(source='Summary_Agent', models_usage=RequestUsage(prompt_tokens=524, completion_tokens=105), content='The message extracted from the image is very likely a scam for several reasons. It claims the recipient has won a 200 EUR Amazon gift card without prior notification or conditions, uses urgency with a \"visit now\" prompt, and incorporates a shortened URL that obscures the real destination—common techniques in scams. Legitimate offers from companies like Amazon detail participation conditions and use verified, official links. Recipients should avoid clicking the link or sharing personal information and are advised to report such messages to authorities or the impersonated company. COMPLETE', type='TextMessage'), TextMessage(source='Language_Translation_Agent', models_usage=RequestUsage(prompt_tokens=614, completion_tokens=134), content='El mensaje extraído de la imagen es muy probablemente una estafa por varias razones. Afirma que el destinatario ha ganado una tarjeta de regalo de Amazon por 200 EUR sin notificación previa ni condiciones, usa urgencia con un mensaje de \"visita ahora\" e incorpora un URL acortado que oculta el destino real, técnicas comunes en estafas. Las ofertas legítimas de empresas como Amazon detallan las condiciones de participación y utilizan enlaces oficiales y verificados. Se aconseja a los destinatarios que eviten hacer clic en el enlace o compartir información personal y que informen sobre dichos mensajes a las autoridades o a la empresa suplantada.', type='TextMessage')], stop_reason='Maximum number of turns 5 reached.')"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from autogen_agentchat.ui import Console\n",
"await Console(stream)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"streams = []\n",
"async for s in stream:\n",
" streams.append(s)"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"('El mensaje de la imagen sugiere fuertemente una estafa. Anuncia un supuesto '\n",
" 'premio inesperado de una tarjeta de regalo de Amazon por 200 EUR, instando a '\n",
" 'una acción inmediata con una instrucción de \"visita ahora\", e incluye un '\n",
" 'enlace acortado que podría ocultar un destino malicioso. Estos elementos '\n",
" 'coinciden con las tácticas típicas de estafas diseñadas para engañar a los '\n",
" 'usuarios y lograr que hagan clic en enlaces potencialmente dañinos. Las '\n",
" 'promociones genuinas de compañías como Amazon ofrecen detalles claros y '\n",
" 'enlaces verificados. Se aconseja evitar el enlace y no proporcionar ninguna '\n",
" 'información personal. En su lugar, informa del mensaje a las autoridades o a '\n",
" 'la empresa suplantada para mayor seguridad.')\n"
]
}
],
"source": [
"from pprint import pprint\n",
"pprint(streams[-1].messages[-1].content)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
|