ai-parrot 0.15.10__cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of ai-parrot might be problematic. Click here for more details.

Files changed (403) hide show
  1. ai_parrot-0.15.10.dist-info/METADATA +444 -0
  2. ai_parrot-0.15.10.dist-info/RECORD +403 -0
  3. ai_parrot-0.15.10.dist-info/WHEEL +7 -0
  4. ai_parrot-0.15.10.dist-info/licenses/LICENSE +21 -0
  5. ai_parrot-0.15.10.dist-info/top_level.txt +6 -0
  6. crew-builder/.prettierrc +15 -0
  7. crew-builder/QUICKSTART.md +259 -0
  8. crew-builder/README.md +113 -0
  9. crew-builder/env.example +17 -0
  10. crew-builder/jsconfig.json +14 -0
  11. crew-builder/package-lock.json +4242 -0
  12. crew-builder/package.json +37 -0
  13. crew-builder/scripts/postinstall/apply-patches.mjs +260 -0
  14. crew-builder/src/app.css +18 -0
  15. crew-builder/src/app.d.ts +13 -0
  16. crew-builder/src/app.html +12 -0
  17. crew-builder/src/components/LoadingSpinner.svelte +64 -0
  18. crew-builder/src/components/ThemeSwitcher.svelte +149 -0
  19. crew-builder/src/components/index.js +7 -0
  20. crew-builder/src/lib/api/client.ts +56 -0
  21. crew-builder/src/lib/api/crew/crew.ts +136 -0
  22. crew-builder/src/lib/api/index.ts +3 -0
  23. crew-builder/src/lib/api/o365/auth.ts +65 -0
  24. crew-builder/src/lib/auth/auth.ts +54 -0
  25. crew-builder/src/lib/components/AgentNode.svelte +43 -0
  26. crew-builder/src/lib/components/ConfigPanel.svelte +278 -0
  27. crew-builder/src/lib/components/JsonTreeNode.svelte +76 -0
  28. crew-builder/src/lib/components/JsonViewer.svelte +24 -0
  29. crew-builder/src/lib/components/MarkdownEditor.svelte +48 -0
  30. crew-builder/src/lib/components/ThemeToggle.svelte +36 -0
  31. crew-builder/src/lib/components/Toast.svelte +67 -0
  32. crew-builder/src/lib/components/Toolbar.svelte +157 -0
  33. crew-builder/src/lib/components/index.ts +10 -0
  34. crew-builder/src/lib/stores/auth.svelte.ts +158 -0
  35. crew-builder/src/lib/stores/crewStore.ts +369 -0
  36. crew-builder/src/lib/stores/theme.svelte.js +145 -0
  37. crew-builder/src/lib/stores/toast.svelte.ts +69 -0
  38. crew-builder/src/lib/utils/markdown.ts +122 -0
  39. crew-builder/src/routes/+layout.svelte +20 -0
  40. crew-builder/src/routes/+page.svelte +510 -0
  41. crew-builder/src/routes/builder/+page.svelte +204 -0
  42. crew-builder/src/routes/crew/ask/+page.svelte +1052 -0
  43. crew-builder/src/routes/crew/ask/+page.ts +1 -0
  44. crew-builder/src/routes/integrations/o365/+page.svelte +304 -0
  45. crew-builder/src/routes/login/+page.svelte +197 -0
  46. crew-builder/static/README.md +1 -0
  47. crew-builder/svelte.config.js +11 -0
  48. crew-builder/tailwind.config.ts +53 -0
  49. crew-builder/tsconfig.json +3 -0
  50. crew-builder/vite.config.ts +10 -0
  51. mcp_servers/calculator_server.py +309 -0
  52. parrot/__init__.py +39 -0
  53. parrot/__pycache__/__init__.cpython-310.pyc +0 -0
  54. parrot/__pycache__/__init__.cpython-311.pyc +0 -0
  55. parrot/__pycache__/__init__.cpython-312.pyc +0 -0
  56. parrot/__pycache__/version.cpython-310.pyc +0 -0
  57. parrot/__pycache__/version.cpython-311.pyc +0 -0
  58. parrot/__pycache__/version.cpython-312.pyc +0 -0
  59. parrot/_version.py +34 -0
  60. parrot/agents/__init__.py +10 -0
  61. parrot/bots/__init__.py +13 -0
  62. parrot/bots/abstract.py +2874 -0
  63. parrot/bots/agent.py +916 -0
  64. parrot/bots/basic.py +9 -0
  65. parrot/bots/chatbot.py +669 -0
  66. parrot/bots/data.py +653 -0
  67. parrot/bots/database/__init__.py +5 -0
  68. parrot/bots/database/abstract.py +3065 -0
  69. parrot/bots/database/cache.py +286 -0
  70. parrot/bots/database/models.py +468 -0
  71. parrot/bots/database/prompts.py +154 -0
  72. parrot/bots/database/retries.py +98 -0
  73. parrot/bots/database/router.py +271 -0
  74. parrot/bots/database/sql.py +42 -0
  75. parrot/bots/database/tools.py +389 -0
  76. parrot/bots/db/__init__.py +4 -0
  77. parrot/bots/db/abstract.py +493 -0
  78. parrot/bots/db/cache.py +85 -0
  79. parrot/bots/db/elastic.py +1014 -0
  80. parrot/bots/db/influx.py +898 -0
  81. parrot/bots/db/mock.py +96 -0
  82. parrot/bots/db/multi.py +783 -0
  83. parrot/bots/db/prompts.py +183 -0
  84. parrot/bots/db/sql.py +1087 -0
  85. parrot/bots/db/tools.py +169 -0
  86. parrot/bots/document.py +680 -0
  87. parrot/bots/hrbot.py +15 -0
  88. parrot/bots/kb.py +161 -0
  89. parrot/bots/mcp.py +36 -0
  90. parrot/bots/orchestration/README.md +463 -0
  91. parrot/bots/orchestration/__init__.py +1 -0
  92. parrot/bots/orchestration/agent.py +127 -0
  93. parrot/bots/orchestration/crew.py +2019 -0
  94. parrot/bots/orchestration/fsm.py +1179 -0
  95. parrot/bots/orchestration/hr.py +434 -0
  96. parrot/bots/orchestration/verify.py +202 -0
  97. parrot/bots/product.py +204 -0
  98. parrot/bots/prompts/__init__.py +77 -0
  99. parrot/bots/prompts/agents.py +108 -0
  100. parrot/bots/prompts/data.py +216 -0
  101. parrot/bots/prompts/output_generation.py +40 -0
  102. parrot/bots/scraper/__init__.py +3 -0
  103. parrot/bots/scraper/models.py +122 -0
  104. parrot/bots/scraper/scraper.py +1173 -0
  105. parrot/bots/scraper/templates.py +115 -0
  106. parrot/bots/webdev.py +81 -0
  107. parrot/clients/__init__.py +42 -0
  108. parrot/clients/base.py +1107 -0
  109. parrot/clients/claude.py +1080 -0
  110. parrot/clients/google.py +4067 -0
  111. parrot/clients/gpt.py +1728 -0
  112. parrot/clients/groq.py +861 -0
  113. parrot/clients/hf.py +586 -0
  114. parrot/clients/vertex.py +862 -0
  115. parrot/conf.py +289 -0
  116. parrot/embeddings/__init__.py +5 -0
  117. parrot/embeddings/base.py +143 -0
  118. parrot/embeddings/google.py +52 -0
  119. parrot/embeddings/huggingface.py +67 -0
  120. parrot/embeddings/processor.py +88 -0
  121. parrot/exceptions.c +13868 -0
  122. parrot/exceptions.cpython-312-x86_64-linux-gnu.so +0 -0
  123. parrot/exceptions.pxd +22 -0
  124. parrot/exceptions.pxi +15 -0
  125. parrot/exceptions.pyx +44 -0
  126. parrot/generators/__init__.py +29 -0
  127. parrot/generators/base.py +200 -0
  128. parrot/generators/html.py +293 -0
  129. parrot/generators/react.py +205 -0
  130. parrot/generators/streamlit.py +203 -0
  131. parrot/generators/template.py +105 -0
  132. parrot/handlers/__init__.py +4 -0
  133. parrot/handlers/agent.py +798 -0
  134. parrot/handlers/agents/__init__.py +1 -0
  135. parrot/handlers/agents/abstract.py +900 -0
  136. parrot/handlers/agents/manager.py +296 -0
  137. parrot/handlers/bots.py +338 -0
  138. parrot/handlers/chat.py +914 -0
  139. parrot/handlers/creation.sql +192 -0
  140. parrot/handlers/crew/ARCHITECTURE.md +362 -0
  141. parrot/handlers/crew/__init__.py +0 -0
  142. parrot/handlers/crew/handler.py +801 -0
  143. parrot/handlers/crew/models.py +229 -0
  144. parrot/handlers/jobs/__init__.py +10 -0
  145. parrot/handlers/jobs/job.py +384 -0
  146. parrot/handlers/jobs/mixin.py +627 -0
  147. parrot/handlers/jobs/models.py +115 -0
  148. parrot/handlers/jobs/worker.py +31 -0
  149. parrot/handlers/models.py +596 -0
  150. parrot/handlers/o365_auth.py +105 -0
  151. parrot/interfaces/__init__.py +6 -0
  152. parrot/interfaces/credentials.py +113 -0
  153. parrot/interfaces/database.py +27 -0
  154. parrot/interfaces/google.py +1121 -0
  155. parrot/interfaces/http.py +651 -0
  156. parrot/interfaces/images/__init__.py +0 -0
  157. parrot/interfaces/images/plugins/__init__.py +24 -0
  158. parrot/interfaces/images/plugins/abstract.py +58 -0
  159. parrot/interfaces/images/plugins/analisys.py +148 -0
  160. parrot/interfaces/images/plugins/classify.py +150 -0
  161. parrot/interfaces/images/plugins/classifybase.py +182 -0
  162. parrot/interfaces/images/plugins/detect.py +150 -0
  163. parrot/interfaces/images/plugins/exif.py +1103 -0
  164. parrot/interfaces/images/plugins/hash.py +52 -0
  165. parrot/interfaces/images/plugins/vision.py +104 -0
  166. parrot/interfaces/images/plugins/yolo.py +66 -0
  167. parrot/interfaces/images/plugins/zerodetect.py +197 -0
  168. parrot/interfaces/o365.py +978 -0
  169. parrot/interfaces/onedrive.py +822 -0
  170. parrot/interfaces/sharepoint.py +1435 -0
  171. parrot/interfaces/soap.py +257 -0
  172. parrot/loaders/__init__.py +57 -0
  173. parrot/loaders/abstract.py +1120 -0
  174. parrot/loaders/audio.py +199 -0
  175. parrot/loaders/basepdf.py +53 -0
  176. parrot/loaders/basevideo.py +1454 -0
  177. parrot/loaders/csv.py +409 -0
  178. parrot/loaders/docx.py +116 -0
  179. parrot/loaders/epubloader.py +316 -0
  180. parrot/loaders/excel.py +199 -0
  181. parrot/loaders/files/__init__.py +0 -0
  182. parrot/loaders/files/abstract.py +39 -0
  183. parrot/loaders/files/html.py +26 -0
  184. parrot/loaders/files/text.py +63 -0
  185. parrot/loaders/html.py +152 -0
  186. parrot/loaders/markdown.py +442 -0
  187. parrot/loaders/pdf.py +373 -0
  188. parrot/loaders/pdfmark.py +320 -0
  189. parrot/loaders/pdftables.py +506 -0
  190. parrot/loaders/ppt.py +476 -0
  191. parrot/loaders/qa.py +63 -0
  192. parrot/loaders/splitters/__init__.py +10 -0
  193. parrot/loaders/splitters/base.py +140 -0
  194. parrot/loaders/splitters/md.py +228 -0
  195. parrot/loaders/splitters/token.py +143 -0
  196. parrot/loaders/txt.py +26 -0
  197. parrot/loaders/video.py +89 -0
  198. parrot/loaders/videolocal.py +218 -0
  199. parrot/loaders/videounderstanding.py +377 -0
  200. parrot/loaders/vimeo.py +167 -0
  201. parrot/loaders/web.py +599 -0
  202. parrot/loaders/youtube.py +504 -0
  203. parrot/manager/__init__.py +5 -0
  204. parrot/manager/manager.py +627 -0
  205. parrot/mcp/__init__.py +21 -0
  206. parrot/mcp/integration.py +962 -0
  207. parrot/mcp/oauth.py +242 -0
  208. parrot/mcp/server.py +575 -0
  209. parrot/memory/__init__.py +14 -0
  210. parrot/memory/abstract.py +209 -0
  211. parrot/memory/file.py +153 -0
  212. parrot/memory/mem.py +131 -0
  213. parrot/memory/redis.py +613 -0
  214. parrot/models/__init__.py +46 -0
  215. parrot/models/basic.py +94 -0
  216. parrot/models/compliance.py +208 -0
  217. parrot/models/crew.py +323 -0
  218. parrot/models/detections.py +654 -0
  219. parrot/models/generation.py +85 -0
  220. parrot/models/google.py +222 -0
  221. parrot/models/groq.py +23 -0
  222. parrot/models/openai.py +30 -0
  223. parrot/models/outputs.py +152 -0
  224. parrot/models/responses.py +871 -0
  225. parrot/notifications/__init__.py +743 -0
  226. parrot/openapi/__init__.py +3 -0
  227. parrot/openapi/components.yaml +641 -0
  228. parrot/openapi/config.py +322 -0
  229. parrot/outputs/__init__.py +32 -0
  230. parrot/outputs/formats/__init__.py +54 -0
  231. parrot/outputs/formats/base.py +175 -0
  232. parrot/outputs/formats/charts.py +277 -0
  233. parrot/outputs/formats/html.py +572 -0
  234. parrot/outputs/formats/json.py +38 -0
  235. parrot/outputs/formats/map.py +278 -0
  236. parrot/outputs/formats/terminal.py +98 -0
  237. parrot/outputs/formats/yaml.py +61 -0
  238. parrot/outputs/formatter.py +80 -0
  239. parrot/outputs/renderer.py +236 -0
  240. parrot/outputs/templates/__init__.py +95 -0
  241. parrot/pipelines/__init__.py +0 -0
  242. parrot/pipelines/abstract.py +210 -0
  243. parrot/pipelines/detector.py +124 -0
  244. parrot/pipelines/models.py +90 -0
  245. parrot/pipelines/planogram.py +3002 -0
  246. parrot/pipelines/table.sql +97 -0
  247. parrot/plugins/__init__.py +94 -0
  248. parrot/plugins/importer.py +79 -0
  249. parrot/py.typed +0 -0
  250. parrot/registry/__init__.py +17 -0
  251. parrot/registry/registry.py +545 -0
  252. parrot/scheduler/__init__.py +1189 -0
  253. parrot/scheduler/models.py +60 -0
  254. parrot/security/__init__.py +16 -0
  255. parrot/security/prompt_injection.py +268 -0
  256. parrot/security/security_events.sql +25 -0
  257. parrot/services/__init__.py +1 -0
  258. parrot/services/o365_remote_auth.py +235 -0
  259. parrot/stores/__init__.py +7 -0
  260. parrot/stores/abstract.py +352 -0
  261. parrot/stores/arango.py +1090 -0
  262. parrot/stores/bigquery.py +1377 -0
  263. parrot/stores/cache.py +106 -0
  264. parrot/stores/empty.py +10 -0
  265. parrot/stores/kb/__init__.py +7 -0
  266. parrot/stores/kb/abstract.py +62 -0
  267. parrot/stores/kb/cache.py +165 -0
  268. parrot/stores/kb/doc.py +325 -0
  269. parrot/stores/kb/prompt.py +28 -0
  270. parrot/stores/kb/redis.py +659 -0
  271. parrot/stores/kb/store.py +111 -0
  272. parrot/stores/kb/user.py +374 -0
  273. parrot/stores/models.py +37 -0
  274. parrot/stores/pgvector.py +3 -0
  275. parrot/stores/postgres.py +2853 -0
  276. parrot/stores/utils/__init__.py +0 -0
  277. parrot/stores/utils/chunking.py +197 -0
  278. parrot/tools/__init__.py +38 -0
  279. parrot/tools/abstract.py +559 -0
  280. parrot/tools/agent.py +208 -0
  281. parrot/tools/arangodbsearch.py +537 -0
  282. parrot/tools/arxiv_tool.py +188 -0
  283. parrot/tools/calculator/__init__.py +3 -0
  284. parrot/tools/calculator/operations/__init__.py +38 -0
  285. parrot/tools/calculator/operations/calculus.py +80 -0
  286. parrot/tools/calculator/operations/statistics.py +76 -0
  287. parrot/tools/calculator/tool.py +150 -0
  288. parrot/tools/codeinterpreter/__init__.py +127 -0
  289. parrot/tools/codeinterpreter/executor.py +371 -0
  290. parrot/tools/codeinterpreter/internals.py +473 -0
  291. parrot/tools/codeinterpreter/models.py +643 -0
  292. parrot/tools/codeinterpreter/prompts.py +224 -0
  293. parrot/tools/codeinterpreter/tool.py +664 -0
  294. parrot/tools/company_info/__init__.py +6 -0
  295. parrot/tools/company_info/tool.py +1138 -0
  296. parrot/tools/correlationanalysis.py +437 -0
  297. parrot/tools/databasequery.py +938 -0
  298. parrot/tools/db.py +758 -0
  299. parrot/tools/ddgo.py +370 -0
  300. parrot/tools/decorators.py +269 -0
  301. parrot/tools/dftohtml.py +282 -0
  302. parrot/tools/document.py +549 -0
  303. parrot/tools/edareport.py +368 -0
  304. parrot/tools/epson/__init__.py +96 -0
  305. parrot/tools/excel.py +683 -0
  306. parrot/tools/file/__init__.py +13 -0
  307. parrot/tools/file/abstract.py +76 -0
  308. parrot/tools/file/gcs.py +378 -0
  309. parrot/tools/file/local.py +284 -0
  310. parrot/tools/file/s3.py +511 -0
  311. parrot/tools/file/tmp.py +309 -0
  312. parrot/tools/file/tool.py +501 -0
  313. parrot/tools/file_reader.py +129 -0
  314. parrot/tools/flowtask/__init__.py +1 -0
  315. parrot/tools/flowtask/component.py +370 -0
  316. parrot/tools/gittoolkit.py +508 -0
  317. parrot/tools/google/__init__.py +18 -0
  318. parrot/tools/google/base.py +169 -0
  319. parrot/tools/google/tools.py +1251 -0
  320. parrot/tools/googlelocation.py +5 -0
  321. parrot/tools/googleroutes.py +5 -0
  322. parrot/tools/googlesearch.py +5 -0
  323. parrot/tools/googlesitesearch.py +5 -0
  324. parrot/tools/googlevoice.py +2 -0
  325. parrot/tools/gvoice.py +695 -0
  326. parrot/tools/ibisworld/README.md +225 -0
  327. parrot/tools/ibisworld/__init__.py +11 -0
  328. parrot/tools/ibisworld/tool.py +366 -0
  329. parrot/tools/jiratoolkit.py +571 -0
  330. parrot/tools/manager.py +908 -0
  331. parrot/tools/math.py +152 -0
  332. parrot/tools/msteams.py +1621 -0
  333. parrot/tools/msword.py +635 -0
  334. parrot/tools/multidb.py +580 -0
  335. parrot/tools/networkninja.py +167 -0
  336. parrot/tools/nextstop/__init__.py +4 -0
  337. parrot/tools/nextstop/base.py +286 -0
  338. parrot/tools/nextstop/employee.py +733 -0
  339. parrot/tools/nextstop/store.py +462 -0
  340. parrot/tools/notification.py +435 -0
  341. parrot/tools/o365/__init__.py +42 -0
  342. parrot/tools/o365/base.py +295 -0
  343. parrot/tools/o365/bundle.py +522 -0
  344. parrot/tools/o365/events.py +554 -0
  345. parrot/tools/o365/mail.py +992 -0
  346. parrot/tools/o365/onedrive.py +497 -0
  347. parrot/tools/o365/sharepoint.py +641 -0
  348. parrot/tools/openapi_toolkit.py +783 -0
  349. parrot/tools/openweather.py +527 -0
  350. parrot/tools/pdfprint.py +1001 -0
  351. parrot/tools/powerbi.py +534 -0
  352. parrot/tools/powerpoint.py +1113 -0
  353. parrot/tools/products/__init__.py +246 -0
  354. parrot/tools/pythonpandas.py +555 -0
  355. parrot/tools/pythonrepl.py +898 -0
  356. parrot/tools/qsource.py +432 -0
  357. parrot/tools/querytoolkit.py +395 -0
  358. parrot/tools/quickeda.py +827 -0
  359. parrot/tools/resttool.py +553 -0
  360. parrot/tools/retail/__init__.py +0 -0
  361. parrot/tools/retail/bby.py +528 -0
  362. parrot/tools/sassie/__init__.py +352 -0
  363. parrot/tools/scraping/__init__.py +7 -0
  364. parrot/tools/scraping/docs/select.md +466 -0
  365. parrot/tools/scraping/documentation.md +1193 -0
  366. parrot/tools/scraping/driver.py +436 -0
  367. parrot/tools/scraping/models.py +575 -0
  368. parrot/tools/scraping/options.py +85 -0
  369. parrot/tools/scraping/orchestrator.py +517 -0
  370. parrot/tools/scraping/readme.md +740 -0
  371. parrot/tools/scraping/tool.py +3079 -0
  372. parrot/tools/seasonaldetection.py +642 -0
  373. parrot/tools/shell_tool/__init__.py +5 -0
  374. parrot/tools/shell_tool/actions.py +408 -0
  375. parrot/tools/shell_tool/engine.py +155 -0
  376. parrot/tools/shell_tool/models.py +322 -0
  377. parrot/tools/shell_tool/tool.py +442 -0
  378. parrot/tools/textfile.py +59 -0
  379. parrot/tools/toolkit.py +277 -0
  380. parrot/tools/webapp_tool.py +187 -0
  381. parrot/tools/workday/__init__.py +6 -0
  382. parrot/tools/workday/models.py +1129 -0
  383. parrot/tools/workday/tool.py +944 -0
  384. parrot/tools/yfinance_tool.py +306 -0
  385. parrot/tools/zipcode.py +217 -0
  386. parrot/utils/__init__.py +2 -0
  387. parrot/utils/helpers.py +73 -0
  388. parrot/utils/parsers/__init__.py +5 -0
  389. parrot/utils/parsers/toml.c +12078 -0
  390. parrot/utils/parsers/toml.cpython-312-x86_64-linux-gnu.so +0 -0
  391. parrot/utils/parsers/toml.pyx +21 -0
  392. parrot/utils/toml.py +11 -0
  393. parrot/utils/types.cpp +20936 -0
  394. parrot/utils/types.cpython-312-x86_64-linux-gnu.so +0 -0
  395. parrot/utils/types.pyx +213 -0
  396. parrot/utils/uv.py +11 -0
  397. parrot/version.py +10 -0
  398. parrot/yaml-rs/Cargo.lock +350 -0
  399. parrot/yaml-rs/Cargo.toml +19 -0
  400. parrot/yaml-rs/pyproject.toml +19 -0
  401. parrot/yaml-rs/python/yaml_rs/__init__.py +81 -0
  402. parrot/yaml-rs/src/lib.rs +222 -0
  403. requirements/requirements-dev.txt +21 -0
@@ -0,0 +1,444 @@
1
+ Metadata-Version: 2.4
2
+ Name: ai-parrot
3
+ Version: 0.15.10
4
+ Summary: Chatbot services for Navigator, based on Langchain
5
+ Author-email: Jesus Lara <jesuslara@phenobarbital.info>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/phenobarbital/ai-parrot
8
+ Project-URL: Source, https://github.com/phenobarbital/ai-parrot
9
+ Project-URL: Tracker, https://github.com/phenobarbital/ai-parrot/issues
10
+ Project-URL: Documentation, https://github.com/phenobarbital/ai-parrot/
11
+ Project-URL: Funding, https://paypal.me/phenobarbital
12
+ Project-URL: Say Thanks!, https://saythanks.io/to/phenobarbital
13
+ Keywords: asyncio,asyncpg,aioredis,aiomcache,artificial intelligence,ai,chatbot,agents
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: POSIX :: Linux
17
+ Classifier: Environment :: Web Environment
18
+ Classifier: Topic :: Software Development :: Build Tools
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3 :: Only
24
+ Classifier: Framework :: AsyncIO
25
+ Classifier: Typing :: Typed
26
+ Requires-Python: >=3.10.1
27
+ Description-Content-Type: text/markdown
28
+ License-File: LICENSE
29
+ Requires-Dist: Cython==3.0.11
30
+ Requires-Dist: faiss-cpu>=1.9.0
31
+ Requires-Dist: jq==1.7.0
32
+ Requires-Dist: rank_bm25==0.2.2
33
+ Requires-Dist: tabulate==0.9.0
34
+ Requires-Dist: sentencepiece==0.2.0
35
+ Requires-Dist: markdown2==2.5.4
36
+ Requires-Dist: psycopg-binary==3.2.6
37
+ Requires-Dist: python-datamodel>=0.10.17
38
+ Requires-Dist: backoff==2.2.1
39
+ Requires-Dist: asyncdb>=2.11.6
40
+ Requires-Dist: google-cloud-bigquery>=3.30.0
41
+ Requires-Dist: numexpr==2.10.2
42
+ Requires-Dist: fpdf==1.7.2
43
+ Requires-Dist: python-docx==1.1.2
44
+ Requires-Dist: typing_extensions<=4.14.0,>=4.13.2
45
+ Requires-Dist: navconfig[default]>=1.7.13
46
+ Requires-Dist: navigator-auth>=0.15.8
47
+ Requires-Dist: navigator-session>=0.6.5
48
+ Requires-Dist: navigator-api[locale,uvloop]>=2.13.5
49
+ Requires-Dist: matplotlib==3.10.0
50
+ Requires-Dist: seaborn==0.13.2
51
+ Requires-Dist: pydub==0.25.1
52
+ Requires-Dist: async-notify[all]>=1.4.2
53
+ Requires-Dist: markitdown>=0.1.2
54
+ Requires-Dist: ddgs>=9.5.2
55
+ Requires-Dist: pytesseract>=0.3.13
56
+ Requires-Dist: python-statemachine==2.5.0
57
+ Requires-Dist: aiohttp-swagger3==0.10.0
58
+ Requires-Dist: PyYAML>=6.0.2
59
+ Provides-Extra: agents
60
+ Requires-Dist: sentence_transformers==5.0.0; extra == "agents"
61
+ Requires-Dist: yfinance==0.2.54; extra == "agents"
62
+ Requires-Dist: youtube_search==2.1.2; extra == "agents"
63
+ Requires-Dist: wikipedia==1.4.0; extra == "agents"
64
+ Requires-Dist: mediawikiapi==1.2; extra == "agents"
65
+ Requires-Dist: pyowm==3.3.0; extra == "agents"
66
+ Requires-Dist: stackapi==0.3.1; extra == "agents"
67
+ Requires-Dist: duckduckgo-search==7.5.0; extra == "agents"
68
+ Requires-Dist: google-search-results==2.4.2; extra == "agents"
69
+ Requires-Dist: google-api-python-client>=2.151.0; extra == "agents"
70
+ Requires-Dist: pomegranate>=1.1.1; extra == "agents"
71
+ Requires-Dist: networkx>=3.0; extra == "agents"
72
+ Requires-Dist: decorator>=5; extra == "agents"
73
+ Requires-Dist: autoviz==0.1.905; extra == "agents"
74
+ Requires-Dist: spacy==3.8.6; extra == "agents"
75
+ Requires-Dist: html2text==2025.4.15; extra == "agents"
76
+ Requires-Dist: httpx-sse==0.4.1; extra == "agents"
77
+ Requires-Dist: mcp==1.15.0; extra == "agents"
78
+ Requires-Dist: sse-starlette==3.0.2; extra == "agents"
79
+ Requires-Dist: requests-oauthlib==2.0.0; extra == "agents"
80
+ Requires-Dist: undetected-chromedriver==3.5.5; extra == "agents"
81
+ Requires-Dist: selenium==4.35.0; extra == "agents"
82
+ Requires-Dist: playwright==1.52.0; extra == "agents"
83
+ Requires-Dist: streamlit==1.50.0; extra == "agents"
84
+ Requires-Dist: jira==3.10.5; extra == "agents"
85
+ Requires-Dist: arxiv==2.2.0; extra == "agents"
86
+ Requires-Dist: docker==7.1.0; extra == "agents"
87
+ Requires-Dist: aiogoogle==5.17.0; extra == "agents"
88
+ Requires-Dist: rq==2.6.0; extra == "agents"
89
+ Requires-Dist: zeep[async]==4.3.1; extra == "agents"
90
+ Requires-Dist: branca==0.8.2; extra == "agents"
91
+ Requires-Dist: folium==0.20.0; extra == "agents"
92
+ Requires-Dist: webdriver-manager==4.0.2; extra == "agents"
93
+ Provides-Extra: loaders
94
+ Requires-Dist: mammoth==1.8.0; extra == "loaders"
95
+ Requires-Dist: markdownify==1.1.0; extra == "loaders"
96
+ Requires-Dist: python-docx==1.1.2; extra == "loaders"
97
+ Requires-Dist: pymupdf==1.26.3; extra == "loaders"
98
+ Requires-Dist: pymupdf4llm==0.0.27; extra == "loaders"
99
+ Requires-Dist: pdf4llm==0.0.27; extra == "loaders"
100
+ Requires-Dist: pytube==15.0.0; extra == "loaders"
101
+ Requires-Dist: youtube_transcript_api==1.0.3; extra == "loaders"
102
+ Requires-Dist: python-pptx==1.0.2; extra == "loaders"
103
+ Requires-Dist: yt-dlp==2025.8.22; extra == "loaders"
104
+ Requires-Dist: ebooklib>=0.19; extra == "loaders"
105
+ Requires-Dist: whisperx==3.4.2; extra == "loaders"
106
+ Requires-Dist: av==15.1.0; extra == "loaders"
107
+ Requires-Dist: resemblyzer==0.1.4; extra == "loaders"
108
+ Requires-Dist: pyannote-audio==3.4.0; extra == "loaders"
109
+ Requires-Dist: pyannote-core==5.0.0; extra == "loaders"
110
+ Requires-Dist: pyannote-database==5.1.3; extra == "loaders"
111
+ Requires-Dist: pyannote-metrics==3.2.1; extra == "loaders"
112
+ Requires-Dist: pyannote-pipeline==3.0.1; extra == "loaders"
113
+ Requires-Dist: pytorch-lightning==2.5.5; extra == "loaders"
114
+ Requires-Dist: pytorch-metric-learning==2.9.0; extra == "loaders"
115
+ Requires-Dist: nvidia-cudnn-cu12==9.1.0.70; extra == "loaders"
116
+ Requires-Dist: moviepy==2.2.1; extra == "loaders"
117
+ Requires-Dist: decorator>=5; extra == "loaders"
118
+ Requires-Dist: ffmpeg==1.4; extra == "loaders"
119
+ Requires-Dist: paddleocr==3.2.0; extra == "loaders"
120
+ Provides-Extra: vectors
121
+ Requires-Dist: torch==2.6.0; extra == "vectors"
122
+ Requires-Dist: torchaudio==2.6.0; extra == "vectors"
123
+ Requires-Dist: numpy<2.2,>=2.1; extra == "vectors"
124
+ Requires-Dist: tiktoken==0.9.0; extra == "vectors"
125
+ Requires-Dist: accelerate==0.34.2; extra == "vectors"
126
+ Requires-Dist: bitsandbytes==0.44.1; extra == "vectors"
127
+ Requires-Dist: datasets>=3.0.2; extra == "vectors"
128
+ Requires-Dist: safetensors>=0.4.3; extra == "vectors"
129
+ Requires-Dist: transformers<=4.51.3,>=4.51.1; extra == "vectors"
130
+ Requires-Dist: sentence-transformers>=5.0.0; extra == "vectors"
131
+ Requires-Dist: tokenizers<=0.21.1,>=0.20.0; extra == "vectors"
132
+ Requires-Dist: tensorflow>=2.19.1; extra == "vectors"
133
+ Requires-Dist: tf-keras==2.19.0; extra == "vectors"
134
+ Requires-Dist: simsimd>=4.3.1; extra == "vectors"
135
+ Requires-Dist: opencv-python==4.10.0.84; extra == "vectors"
136
+ Requires-Dist: chromadb==0.6.3; extra == "vectors"
137
+ Provides-Extra: images
138
+ Requires-Dist: torchvision==0.21.0; extra == "images"
139
+ Requires-Dist: timm==1.0.15; extra == "images"
140
+ Requires-Dist: ultralytics==8.3.179; extra == "images"
141
+ Requires-Dist: albumentations==2.0.6; extra == "images"
142
+ Requires-Dist: filetype==1.2.0; extra == "images"
143
+ Requires-Dist: imagehash==4.3.1; extra == "images"
144
+ Requires-Dist: pgvector==0.4.1; extra == "images"
145
+ Requires-Dist: pyheif==0.8.0; extra == "images"
146
+ Requires-Dist: exif==1.6.1; extra == "images"
147
+ Requires-Dist: pillow-avif-plugin==1.5.2; extra == "images"
148
+ Requires-Dist: pillow-heif==0.22.0; extra == "images"
149
+ Requires-Dist: python-xmp-toolkit==2.0.2; extra == "images"
150
+ Requires-Dist: exifread==3.5.1; extra == "images"
151
+ Requires-Dist: transformers<=4.51.3,>=4.51.1; extra == "images"
152
+ Requires-Dist: ffmpeg==1.4; extra == "images"
153
+ Requires-Dist: holoviews==1.21.0; extra == "images"
154
+ Requires-Dist: bokeh==3.7.3; extra == "images"
155
+ Requires-Dist: pandas-bokeh==0.5.5; extra == "images"
156
+ Requires-Dist: plotly==5.22.0; extra == "images"
157
+ Requires-Dist: ipywidgets==8.1.0; extra == "images"
158
+ Requires-Dist: altair==5.5.0; extra == "images"
159
+ Provides-Extra: whisperx
160
+ Requires-Dist: whisperx==3.4.2; extra == "whisperx"
161
+ Requires-Dist: av==15.1.0; extra == "whisperx"
162
+ Requires-Dist: torch==2.6.0; extra == "whisperx"
163
+ Requires-Dist: torchaudio==2.6.0; extra == "whisperx"
164
+ Requires-Dist: torchvision==0.21.0; extra == "whisperx"
165
+ Requires-Dist: pyannote-audio==3.4.0; extra == "whisperx"
166
+ Requires-Dist: pyannote-core==5.0.0; extra == "whisperx"
167
+ Requires-Dist: pyannote-database==5.1.3; extra == "whisperx"
168
+ Requires-Dist: pyannote-metrics==3.2.1; extra == "whisperx"
169
+ Requires-Dist: pyannote-pipeline==3.0.1; extra == "whisperx"
170
+ Requires-Dist: pytorch-lightning==2.5.5; extra == "whisperx"
171
+ Requires-Dist: pytorch-metric-learning==2.9.0; extra == "whisperx"
172
+ Requires-Dist: nvidia-cudnn-cu12==9.1.0.70; extra == "whisperx"
173
+ Requires-Dist: torch-audiomentations==0.12.0; extra == "whisperx"
174
+ Requires-Dist: torch-pitch-shift==1.2.5; extra == "whisperx"
175
+ Requires-Dist: torchmetrics==1.8.2; extra == "whisperx"
176
+ Provides-Extra: anthropic
177
+ Requires-Dist: anthropic==0.61.0; extra == "anthropic"
178
+ Provides-Extra: openai
179
+ Requires-Dist: openai==2.6.0; extra == "openai"
180
+ Requires-Dist: tiktoken==0.9.0; extra == "openai"
181
+ Provides-Extra: google
182
+ Requires-Dist: google-api-python-client<=2.177.0,>=2.166.0; extra == "google"
183
+ Requires-Dist: google-cloud-texttospeech==2.27.0; extra == "google"
184
+ Requires-Dist: google-genai<=1.36.0,>=1.32.0; extra == "google"
185
+ Requires-Dist: google-cloud-aiplatform==1.110.0; extra == "google"
186
+ Provides-Extra: groq
187
+ Requires-Dist: groq==0.33.0; extra == "groq"
188
+ Requires-Dist: typing_extensions<=4.14.1,>=4.13.2; extra == "groq"
189
+ Provides-Extra: milvus
190
+ Requires-Dist: pymilvus==2.4.8; extra == "milvus"
191
+ Requires-Dist: milvus==2.3.5; extra == "milvus"
192
+ Provides-Extra: chroma
193
+ Requires-Dist: chroma==0.2.0; extra == "chroma"
194
+ Provides-Extra: eda
195
+ Requires-Dist: ydata-profiling==4.16.1; extra == "eda"
196
+ Requires-Dist: sweetviz==2.1.4; extra == "eda"
197
+ Provides-Extra: all
198
+ Requires-Dist: ai-parrot[agents,anthropic,chroma,google,groq,images,loaders,milvus,openai,vectors]; extra == "all"
199
+ Provides-Extra: dev
200
+ Requires-Dist: pytest>=7.2.2; extra == "dev"
201
+ Requires-Dist: pytest-asyncio==0.21.1; extra == "dev"
202
+ Requires-Dist: pytest-xdist==3.3.1; extra == "dev"
203
+ Requires-Dist: pytest-assume==2.4.3; extra == "dev"
204
+ Requires-Dist: black; extra == "dev"
205
+ Requires-Dist: pylint; extra == "dev"
206
+ Requires-Dist: mypy; extra == "dev"
207
+ Requires-Dist: coverage; extra == "dev"
208
+ Requires-Dist: maturin==1.9.6; extra == "dev"
209
+ Dynamic: license-file
210
+
211
+ # 🦜 AI-Parrot
212
+
213
+ **A unified Python library for building intelligent agents, chatbots, and LLM-powered applications**
214
+
215
+ AI-Parrot simplifies working with Large Language Models by providing a cohesive framework for creating conversational agents, managing tools, implementing RAG systems, and orchestrating complex AI workflowsβ€”all without the bloat of traditional frameworks.
216
+
217
+ ## ✨ Key Features
218
+
219
+ ### πŸ€– Multi-Provider LLM Support
220
+ Connect seamlessly to multiple AI providers through a unified interface:
221
+ - **OpenAI** (GPT-4, GPT-3.5)
222
+ - **Anthropic Claude** (Claude 3.5 Sonnet, Opus)
223
+ - **Google GenAI** (Gemini models)
224
+ - **Groq** (Fast inference)
225
+
226
+ ### πŸ› οΈ Intelligent Agent System
227
+ Build sophisticated agents with built-in tool support and orchestration:
228
+ - **Tool Manager**: Share tools across multiple agents
229
+ - **Agent Registry**: Decorator-based agent creation and registration
230
+ - **Python Tool Calling**: Native support for calling Python functions as tools
231
+ - **Complex Toolkits**: Compose multiple tools into reusable toolkits
232
+
233
+ ### πŸ’¬ Chatbot Creation
234
+ Create production-ready chatbots with minimal code:
235
+ - Conversational context management
236
+ - Multi-turn dialogue support
237
+ - Streaming responses
238
+ - Custom personality and behavior configuration
239
+
240
+ ### πŸ—„οΈ Knowledge Base & RAG
241
+ Implement Retrieval-Augmented Generation with enterprise-grade components:
242
+ - **PgVector Integration**: PostgreSQL-based vector storage for semantic search
243
+ - **Document Loaders**: Transform any document format into AI-ready context
244
+ - **Open-Source Embeddings**: Hugging Face Transformers integration
245
+ - **Structured Outputs**: Type-safe responses from your LLMs
246
+
247
+ ### 🌐 API & Server Capabilities
248
+ Deploy your AI applications with ease:
249
+ - **Bot Manager**: Centralized management for multiple bot instances
250
+ - **REST API**: Expose your agents and chatbots via HTTP endpoints
251
+ - **MCP Server**: Model Context Protocol support for standardized agent communication
252
+
253
+ ### ⏰ Task Scheduling
254
+ Orchestrate agent actions over time:
255
+ - Schedule periodic agent tasks
256
+ - Trigger-based automation
257
+ - Asynchronous execution support
258
+ - Task dependency management
259
+
260
+ ## πŸš€ Quick Start
261
+
262
+ ### Installation
263
+
264
+ ```bash
265
+ pip install ai-parrot
266
+ ```
267
+
268
+ ### Create Your First Chatbot
269
+
270
+ ```python
271
+ from ai_parrot import ChatBot, OpenAIClient
272
+
273
+ # Initialize LLM client
274
+ client = OpenAIClient(api_key="your-api-key")
275
+
276
+ # Create a chatbot
277
+ bot = ChatBot(
278
+ name="assistant",
279
+ client=client,
280
+ system_prompt="You are a helpful AI assistant."
281
+ )
282
+
283
+ # Have a conversation
284
+ response = bot.chat("What's the weather like today?")
285
+ print(response)
286
+ ```
287
+
288
+ ### Build an Agent with Tools
289
+
290
+ ```python
291
+ from ai_parrot import Agent, tool
292
+ from ai_parrot.registry import agent_registry
293
+
294
+ @tool
295
+ def calculate_sum(a: int, b: int) -> int:
296
+ """Add two numbers together."""
297
+ return a + b
298
+
299
+ @tool
300
+ def get_current_time() -> str:
301
+ """Get the current time."""
302
+ from datetime import datetime
303
+ return datetime.now().strftime("%H:%M:%S")
304
+
305
+ # Register an agent with tools
306
+ @agent_registry.register("math_agent")
307
+ class MathAgent(Agent):
308
+ def __init__(self):
309
+ super().__init__(
310
+ name="Math Helper",
311
+ tools=[calculate_sum, get_current_time]
312
+ )
313
+
314
+ # Use the agent
315
+ agent = agent_registry.get("math_agent")
316
+ result = agent.run("What's 42 plus 58? Also, what time is it?")
317
+ ```
318
+
319
+ ### Implement RAG with Vector Store
320
+
321
+ ```python
322
+ from ai_parrot import RAGChatBot, PgVectorStore
323
+ from ai_parrot.loaders import PDFLoader, TextLoader
324
+
325
+ # Initialize vector store
326
+ vector_store = PgVectorStore(
327
+ connection_string="postgresql://user:pass@localhost/db"
328
+ )
329
+
330
+ # Load and index documents
331
+ loader = PDFLoader()
332
+ documents = loader.load("./docs/manual.pdf")
333
+ vector_store.add_documents(documents)
334
+
335
+ # Create RAG-enabled chatbot
336
+ rag_bot = RAGChatBot(
337
+ client=client,
338
+ vector_store=vector_store,
339
+ top_k=5
340
+ )
341
+
342
+ # Query with context
343
+ response = rag_bot.chat("How do I configure the settings?")
344
+ ```
345
+
346
+ ### Expose via API
347
+
348
+ ```python
349
+ from ai_parrot import BotManager, create_api
350
+
351
+ # Create bot manager
352
+ manager = BotManager()
353
+ manager.register_bot("assistant", bot)
354
+ manager.register_agent("math_helper", agent)
355
+
356
+ # Create and run API server
357
+ app = create_api(manager)
358
+
359
+ # Run with: uvicorn main:app --reload
360
+ ```
361
+
362
+ ### Schedule Agent Tasks
363
+
364
+ ```python
365
+ from ai_parrot import TaskScheduler
366
+
367
+ scheduler = TaskScheduler()
368
+
369
+ # Schedule a daily summary
370
+ @scheduler.schedule(cron="0 9 * * *") # Every day at 9 AM
371
+ async def daily_summary():
372
+ summary = await agent.run("Generate a summary of yesterday's activities")
373
+ send_email(summary)
374
+
375
+ # Run the scheduler
376
+ scheduler.start()
377
+ ```
378
+
379
+ ## πŸ—οΈ Architecture
380
+
381
+ AI-Parrot is designed with modularity and extensibility in mind:
382
+
383
+ ```
384
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
385
+ β”‚ Application Layer β”‚
386
+ β”‚ (Chatbots, Agents, Custom Logic) β”‚
387
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
388
+ β”‚
389
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
390
+ β”‚ AI-Parrot Core β”‚
391
+ β”‚ β€’ Agent Registry β€’ Tool Manager β”‚
392
+ β”‚ β€’ Bot Manager β€’ Task Scheduler β”‚
393
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
394
+ β”‚
395
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
396
+ β”‚ Provider Integrations β”‚
397
+ β”‚ β€’ OpenAI β€’ Claude β€’ Gemini β”‚
398
+ β”‚ β€’ Groq β€’ Hugging Face β”‚
399
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
400
+ β”‚
401
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
402
+ β”‚ Storage & Infrastructure β”‚
403
+ β”‚ β€’ PgVector β€’ Document Loaders β”‚
404
+ β”‚ β€’ MCP Server β€’ API Layer β”‚
405
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
406
+ ```
407
+
408
+ ## 🎯 Use Cases
409
+
410
+ - **Customer Support Bots**: Build intelligent support agents with knowledge base integration
411
+ - **Research Assistants**: Create agents that can search, analyze, and synthesize information
412
+ - **Automation Workflows**: Schedule and orchestrate AI-powered tasks
413
+ - **Internal Tools**: Expose LLM capabilities through APIs for your team
414
+ - **Multi-Agent Systems**: Coordinate multiple specialized agents working together
415
+
416
+ ## πŸ—ΊοΈ Roadmap
417
+
418
+ - βœ… **Langchain Independence**: Removed heavyweight dependencies
419
+ - 🚧 **Complex Toolkits**: Advanced tool composition and chaining
420
+ - 🚧 **Model Interoperability**: Seamless LLM + Hugging Face model integration
421
+ - πŸ“‹ **Non-LLM Models**: Support for classification, NER, and other ML models
422
+ - πŸ“‹ **MCP Full Integration**: Complete Model Context Protocol implementation
423
+ - πŸ“‹ **Graph-Based RAG**: Knowledge graphs with ArangoDB for advanced reasoning
424
+
425
+ ## 🀝 Contributing
426
+
427
+ Contributions are welcome! Whether it's bug fixes, new features, or documentation improvements, we appreciate your help in making AI-Parrot better.
428
+
429
+ ## πŸ“„ License
430
+
431
+ MIT License.
432
+
433
+ ## πŸ“š Documentation
434
+
435
+ For detailed documentation, examples, and API reference, see the examples/ folder.
436
+
437
+ ## πŸ’¬ Community & Support
438
+
439
+ - **Issues**: [GitHub Issues](your-github-repo/issues)
440
+ - **Discussions**: [GitHub Discussions](your-github-repo/discussions)
441
+
442
+ ---
443
+
444
+ Built with ❀️ for developers who want powerful AI tools without the complexity.