@polymorphism-tech/morph-spec 2.2.0 → 2.4.0

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.
Files changed (251) hide show
  1. package/CLAUDE.md +314 -1673
  2. package/LICENSE +72 -72
  3. package/README.md +515 -516
  4. package/bin/detect-agents.js +225 -225
  5. package/bin/morph-spec.js +358 -173
  6. package/bin/render-template.js +302 -302
  7. package/bin/semantic-detect-agents.js +246 -246
  8. package/bin/task-manager.js +429 -0
  9. package/bin/validate-agents-skills.js +251 -251
  10. package/bin/validate-agents.js +69 -69
  11. package/bin/validate-phase.js +263 -263
  12. package/bin/validate.js +369 -0
  13. package/content/.azure/README.md +293 -293
  14. package/content/.azure/docs/azure-devops-setup.md +454 -454
  15. package/content/.azure/docs/branch-strategy.md +398 -398
  16. package/content/.azure/docs/local-development.md +515 -515
  17. package/content/.azure/pipelines/pipeline-variables.yml +34 -34
  18. package/content/.azure/pipelines/prod-pipeline.yml +319 -319
  19. package/content/.azure/pipelines/staging-pipeline.yml +234 -234
  20. package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
  21. package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
  22. package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
  23. package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
  24. package/content/.claude/commands/morph-apply.md +221 -158
  25. package/content/.claude/commands/morph-archive.md +79 -79
  26. package/content/.claude/commands/morph-infra.md +209 -209
  27. package/content/.claude/commands/morph-preflight.md +227 -0
  28. package/content/.claude/commands/morph-proposal.md +122 -101
  29. package/content/.claude/commands/morph-status.md +86 -86
  30. package/content/.claude/commands/morph-troubleshoot.md +122 -0
  31. package/content/.claude/settings.local.json +15 -15
  32. package/content/.claude/skills/checklists/code-review.md +226 -0
  33. package/content/.claude/skills/checklists/morph-checklist.md +117 -0
  34. package/content/.claude/skills/checklists/simulation-checklist.md +77 -0
  35. package/content/.claude/skills/infra/bicep-architect.md +126 -419
  36. package/content/.claude/skills/infra/container-specialist.md +131 -437
  37. package/content/.claude/skills/infra/devops-engineer.md +119 -405
  38. package/content/.claude/skills/integrations/asaas-financial.md +130 -333
  39. package/content/.claude/skills/integrations/azure-identity.md +142 -309
  40. package/content/.claude/skills/integrations/clerk-auth.md +108 -290
  41. package/content/.claude/skills/integrations/resend-email.md +119 -0
  42. package/content/.claude/skills/specialists/ai-system-architect.md +192 -604
  43. package/content/.claude/skills/specialists/azure-architect.md +142 -142
  44. package/content/.claude/skills/specialists/code-analyzer.md +235 -0
  45. package/content/.claude/skills/specialists/dotnet-senior.md +287 -0
  46. package/content/.claude/skills/specialists/ef-modeler.md +113 -200
  47. package/content/.claude/skills/specialists/hangfire-orchestrator.md +126 -245
  48. package/content/.claude/skills/specialists/ms-agent-expert.md +109 -263
  49. package/content/.claude/skills/specialists/po-pm-advisor.md +197 -197
  50. package/content/.claude/skills/specialists/standards-architect.md +156 -78
  51. package/content/.claude/skills/specialists/testing-specialist.md +126 -0
  52. package/content/.claude/skills/specialists/ui-ux-designer.md +191 -1060
  53. package/content/.claude/skills/stacks/dotnet-blazor.md +210 -588
  54. package/content/.claude/skills/stacks/dotnet-nextjs.md +154 -402
  55. package/content/.claude/skills/workflows/morph-replicate.md +213 -0
  56. package/content/.claude/{commands/morph-clarify.md → skills/workflows/phase-clarify.md} +5 -58
  57. package/content/.claude/{commands/morph-design.md → skills/workflows/phase-design.md} +16 -86
  58. package/content/.claude/{commands/morph-setup.md → skills/workflows/phase-setup.md} +9 -17
  59. package/content/.claude/skills/workflows/phase-tasks.md +164 -0
  60. package/content/.claude/{commands/morph-uiux.md → skills/workflows/phase-uiux.md} +15 -88
  61. package/content/.morph/.morphversion +5 -5
  62. package/content/.morph/archive/.gitkeep +25 -25
  63. package/content/.morph/config/agents.json +378 -242
  64. package/content/.morph/config/config.template.json +89 -108
  65. package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
  66. package/content/.morph/docs/workflows/design-impl.md +37 -0
  67. package/content/.morph/docs/workflows/fast-track.md +29 -0
  68. package/content/.morph/docs/workflows/full-morph.md +76 -0
  69. package/content/.morph/docs/workflows/standard.md +44 -0
  70. package/content/.morph/docs/workflows/ui-refresh.md +39 -0
  71. package/content/.morph/examples/api-nextjs/README.md +241 -241
  72. package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
  73. package/content/.morph/examples/api-nextjs/spec.md +399 -399
  74. package/content/.morph/examples/api-nextjs/tasks.md +168 -168
  75. package/content/.morph/examples/micro-saas/README.md +125 -125
  76. package/content/.morph/examples/micro-saas/contracts.cs +358 -358
  77. package/content/.morph/examples/micro-saas/decisions.md +246 -246
  78. package/content/.morph/examples/micro-saas/spec.md +236 -236
  79. package/content/.morph/examples/micro-saas/tasks.md +150 -150
  80. package/content/.morph/examples/multi-agent/README.md +309 -309
  81. package/content/.morph/examples/multi-agent/contracts.cs +433 -433
  82. package/content/.morph/examples/multi-agent/spec.md +479 -479
  83. package/content/.morph/examples/multi-agent/tasks.md +185 -185
  84. package/content/.morph/examples/scheduled-reports/decisions.md +158 -0
  85. package/content/.morph/examples/scheduled-reports/proposal.md +95 -0
  86. package/content/.morph/examples/scheduled-reports/spec.md +267 -0
  87. package/content/.morph/examples/state-v3.json +188 -0
  88. package/content/.morph/features/.gitkeep +25 -25
  89. package/content/.morph/hooks/README.md +190 -239
  90. package/content/.morph/hooks/pre-commit-agents.sh +24 -24
  91. package/content/.morph/hooks/pre-commit-all.sh +48 -48
  92. package/content/.morph/hooks/pre-commit-specs.sh +49 -49
  93. package/content/.morph/hooks/pre-commit-tests.sh +60 -60
  94. package/content/.morph/project.md +160 -160
  95. package/content/.morph/schemas/agent.schema.json +296 -296
  96. package/content/.morph/schemas/tasks.schema.json +220 -0
  97. package/content/.morph/specs/.gitkeep +20 -20
  98. package/content/.morph/standards/agent-framework-blazor-ui.md +359 -0
  99. package/content/.morph/standards/agent-framework-production.md +410 -0
  100. package/content/.morph/standards/agent-framework-setup.md +413 -453
  101. package/content/.morph/standards/agent-framework-workflows.md +349 -0
  102. package/content/.morph/standards/architecture.md +325 -325
  103. package/content/.morph/standards/azure.md +605 -379
  104. package/content/.morph/standards/coding.md +377 -377
  105. package/content/.morph/standards/dotnet10-migration.md +520 -494
  106. package/content/.morph/standards/fluent-ui-setup.md +590 -590
  107. package/content/.morph/standards/migration-guide.md +514 -514
  108. package/content/.morph/standards/passkeys-auth.md +423 -423
  109. package/content/.morph/standards/vector-search-rag.md +536 -536
  110. package/content/.morph/state.json +17 -17
  111. package/content/.morph/templates/FluentDesignTheme.cs +149 -149
  112. package/content/.morph/templates/MudTheme.cs +281 -281
  113. package/content/.morph/templates/agent.cs +163 -172
  114. package/content/.morph/templates/clarify-questions.md +159 -0
  115. package/content/.morph/templates/component.razor +239 -239
  116. package/content/.morph/templates/contracts/Commands.cs +74 -0
  117. package/content/.morph/templates/contracts/Entities.cs +25 -0
  118. package/content/.morph/templates/contracts/Queries.cs +74 -0
  119. package/content/.morph/templates/contracts/README.md +74 -0
  120. package/content/.morph/templates/contracts.cs +217 -217
  121. package/content/.morph/templates/decisions.md +123 -106
  122. package/content/.morph/templates/design-system.css +226 -226
  123. package/content/.morph/templates/infra/.dockerignore.example +89 -89
  124. package/content/.morph/templates/infra/Dockerfile.example +82 -82
  125. package/content/.morph/templates/infra/README.md +286 -286
  126. package/content/.morph/templates/infra/app-insights.bicep +63 -63
  127. package/content/.morph/templates/infra/app-service.bicep +164 -164
  128. package/content/.morph/templates/infra/container-app-env.bicep +49 -49
  129. package/content/.morph/templates/infra/container-app.bicep +156 -156
  130. package/content/.morph/templates/infra/deploy-checklist.md +426 -0
  131. package/content/.morph/templates/infra/deploy.ps1 +229 -229
  132. package/content/.morph/templates/infra/deploy.sh +208 -208
  133. package/content/.morph/templates/infra/key-vault.bicep +91 -91
  134. package/content/.morph/templates/infra/main.bicep +189 -189
  135. package/content/.morph/templates/infra/parameters.dev.json +29 -29
  136. package/content/.morph/templates/infra/parameters.prod.json +29 -29
  137. package/content/.morph/templates/infra/parameters.staging.json +29 -29
  138. package/content/.morph/templates/infra/sql-database.bicep +103 -103
  139. package/content/.morph/templates/infra/storage.bicep +106 -106
  140. package/content/.morph/templates/integrations/asaas-client.cs +387 -387
  141. package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
  142. package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
  143. package/content/.morph/templates/integrations/clerk-config.cs +258 -258
  144. package/content/.morph/templates/job.cs +171 -171
  145. package/content/.morph/templates/migration.cs +83 -83
  146. package/content/.morph/templates/proposal.md +141 -155
  147. package/content/.morph/templates/recap.md +94 -105
  148. package/content/.morph/templates/repository.cs +141 -141
  149. package/content/.morph/templates/saas/subscription.cs +347 -347
  150. package/content/.morph/templates/saas/tenant.cs +338 -338
  151. package/content/.morph/templates/service.cs +139 -139
  152. package/content/.morph/templates/simulation.md +353 -0
  153. package/content/.morph/templates/spec.md +149 -148
  154. package/content/.morph/templates/sprint-status.yaml +68 -68
  155. package/content/.morph/templates/state.template.json +222 -222
  156. package/content/.morph/templates/story.md +143 -143
  157. package/content/.morph/templates/tasks.md +257 -235
  158. package/content/.morph/templates/test.cs +239 -239
  159. package/content/.morph/templates/ui-components.md +362 -276
  160. package/content/.morph/templates/ui-design-system.md +286 -286
  161. package/content/.morph/templates/ui-flows.md +336 -336
  162. package/content/.morph/templates/ui-mockups.md +133 -133
  163. package/content/.morph/test-infra/example.bicep +59 -59
  164. package/content/CLAUDE.md +150 -442
  165. package/content/README.md +79 -79
  166. package/detectors/config-detector.js +223 -223
  167. package/detectors/conversation-analyzer.js +163 -163
  168. package/detectors/index.js +84 -84
  169. package/detectors/standards-generator.js +275 -275
  170. package/detectors/structure-detector.js +245 -250
  171. package/docs/README.md +144 -149
  172. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
  173. package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
  174. package/docs/api/scripts/collapse.js +38 -38
  175. package/docs/api/scripts/commonNav.js +28 -28
  176. package/docs/api/scripts/linenumber.js +25 -25
  177. package/docs/api/scripts/nav.js +12 -12
  178. package/docs/api/scripts/polyfill.js +3 -3
  179. package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
  180. package/docs/api/scripts/prettify/lang-css.js +2 -2
  181. package/docs/api/scripts/prettify/prettify.js +28 -28
  182. package/docs/api/scripts/search.js +98 -98
  183. package/docs/api/styles/jsdoc.css +776 -776
  184. package/docs/api/styles/prettify.css +80 -80
  185. package/docs/examples.md +328 -328
  186. package/docs/getting-started.md +301 -302
  187. package/docs/installation.md +361 -361
  188. package/docs/templates.md +418 -418
  189. package/docs/validation-checklist.md +265 -266
  190. package/package.json +80 -80
  191. package/scripts/postinstall.js +132 -132
  192. package/src/commands/advance-phase.js +183 -0
  193. package/src/commands/analyze-blazor-concurrency.js +193 -0
  194. package/src/commands/create-story.js +351 -351
  195. package/src/commands/detect-agents.js +139 -0
  196. package/src/commands/detect.js +104 -104
  197. package/src/commands/doctor.js +356 -280
  198. package/src/commands/generate.js +149 -149
  199. package/src/commands/init.js +258 -245
  200. package/src/commands/lint-fluent.js +352 -0
  201. package/src/commands/rollback-phase.js +185 -0
  202. package/src/commands/session-summary.js +291 -0
  203. package/src/commands/shard-spec.js +224 -224
  204. package/src/commands/sprint-status.js +250 -250
  205. package/src/commands/state.js +333 -333
  206. package/src/commands/sync.js +167 -167
  207. package/src/commands/task.js +78 -0
  208. package/src/commands/troubleshoot.js +222 -0
  209. package/src/commands/update.js +192 -159
  210. package/src/commands/validate-blazor-state.js +210 -0
  211. package/src/commands/validate-blazor.js +156 -0
  212. package/src/commands/validate-css.js +84 -0
  213. package/src/commands/validate-phase.js +221 -0
  214. package/src/lib/blazor-concurrency-analyzer.js +288 -0
  215. package/src/lib/blazor-state-validator.js +291 -0
  216. package/src/lib/blazor-validator.js +374 -0
  217. package/src/lib/complexity-analyzer.js +441 -292
  218. package/src/lib/continuous-validator.js +421 -0
  219. package/src/lib/css-validator.js +352 -0
  220. package/src/lib/decision-constraint-loader.js +109 -0
  221. package/src/lib/design-system-generator.js +298 -298
  222. package/src/lib/learning-system.js +520 -0
  223. package/src/lib/mockup-generator.js +366 -0
  224. package/src/lib/recap-generator.js +205 -0
  225. package/src/lib/state-manager.js +397 -340
  226. package/src/lib/troubleshoot-grep.js +194 -0
  227. package/src/lib/troubleshoot-index.js +144 -0
  228. package/src/lib/ui-detector.js +350 -0
  229. package/src/lib/validation-runner.js +231 -0
  230. package/src/lib/validators/architecture-validator.js +387 -0
  231. package/src/lib/validators/contract-compliance-validator.js +273 -0
  232. package/src/lib/validators/package-validator.js +360 -0
  233. package/src/lib/validators/ui-contrast-validator.js +422 -0
  234. package/src/utils/file-copier.js +179 -139
  235. package/src/utils/logger.js +32 -32
  236. package/src/utils/version-checker.js +175 -175
  237. package/content/.claude/commands/morph-costs.md +0 -206
  238. package/content/.claude/commands/morph-tasks.md +0 -319
  239. package/content/.claude/skills/specialists/cost-guardian.md +0 -110
  240. package/content/.claude/skills/stacks/shopify.md +0 -445
  241. package/content/.morph/config/azure-pricing.json +0 -70
  242. package/content/.morph/config/azure-pricing.schema.json +0 -50
  243. package/content/.morph/hooks/pre-commit-costs.sh +0 -91
  244. package/docs/api/cost-calculator.js.html +0 -513
  245. package/docs/api/design-system-generator.js.html +0 -382
  246. package/docs/api/global.html +0 -5263
  247. package/docs/api/index.html +0 -96
  248. package/docs/api/state-manager.js.html +0 -423
  249. package/src/commands/cost.js +0 -181
  250. package/src/commands/update-pricing.js +0 -206
  251. package/src/lib/cost-calculator.js +0 -429
@@ -1,479 +1,479 @@
1
- # Multi-Agent System - Especificação
2
-
3
- ## 1. Visão Geral
4
-
5
- Sistema de agentes de IA cooperativos usando Microsoft Semantic Kernel para resolver tarefas complexas através de decomposição e especialização.
6
-
7
- ### 1.1 Objetivos
8
-
9
- - Criar sistema escalável de agentes cooperativos
10
- - Implementar orquestração inteligente de tarefas
11
- - Fornecer extensibilidade para novos agentes e plugins
12
- - Manter custos controlados com uso eficiente de tokens
13
-
14
- ### 1.2 Use Cases
15
-
16
- | Use Case | Agentes Envolvidos |
17
- |----------|-------------------|
18
- | Pesquisa de mercado | Orchestrator → Research → Analysis → Writing |
19
- | Análise de documentos | Orchestrator → Research → Analysis |
20
- | Geração de relatórios | Orchestrator → Research → Writing |
21
- | Q&A com base de conhecimento | Orchestrator → Research |
22
-
23
- ## 2. Arquitetura
24
-
25
- ### 2.1 Componentes Principais
26
-
27
- ```
28
- ┌─────────────────────────────────────────────────────────────────┐
29
- │ API Layer │
30
- │ ┌─────────────────┐ ┌─────────────────┐ │
31
- │ │ ChatEndpoints │ │ AgentEndpoints │ │
32
- │ └─────────────────┘ └─────────────────┘ │
33
- └─────────────────────────────────────────────────────────────────┘
34
-
35
-
36
- ┌─────────────────────────────────────────────────────────────────┐
37
- │ Orchestration Layer │
38
- │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
39
- │ │ TaskDecomposer │ │ AgentRouter │ │ ResultAggregator│ │
40
- │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
41
- └─────────────────────────────────────────────────────────────────┘
42
-
43
-
44
- ┌─────────────────────────────────────────────────────────────────┐
45
- │ Agent Layer │
46
- │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
47
- │ │ Research │ │ Analysis │ │ Writing │ │
48
- │ │ Agent │ │ Agent │ │ Agent │ │
49
- │ └──────────────┘ └──────────────┘ └──────────────────────┘ │
50
- └─────────────────────────────────────────────────────────────────┘
51
-
52
-
53
- ┌─────────────────────────────────────────────────────────────────┐
54
- │ Plugin Layer │
55
- │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
56
- │ │ WebSearch │ │ Document │ │ DataAnalysis│ │
57
- │ │ Plugin │ │ Plugin │ │ Plugin │ │
58
- │ └─────────────┘ └─────────────┘ └─────────────┘ │
59
- └─────────────────────────────────────────────────────────────────┘
60
-
61
-
62
- ┌─────────────────────────────────────────────────────────────────┐
63
- │ Infrastructure Layer │
64
- │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
65
- │ │ Azure OpenAI │ │ Vector Store │ │ Memory Store │ │
66
- │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
67
- └─────────────────────────────────────────────────────────────────┘
68
- ```
69
-
70
- ### 2.2 Fluxo de Dados
71
-
72
- ```
73
- User Request
74
-
75
-
76
- ┌─────────────────────────────────────────┐
77
- │ Task Decomposition │
78
- │ "Compare cloud providers" → │
79
- │ [Research AWS, Research Azure, │
80
- │ Research GCP, Compare, Write Report] │
81
- └─────────────────────────────────────────┘
82
-
83
-
84
- ┌─────────────────────────────────────────┐
85
- │ Agent Execution │
86
- │ Research Agent → findings[] │
87
- │ Analysis Agent → insights │
88
- │ Writing Agent → report │
89
- └─────────────────────────────────────────┘
90
-
91
-
92
- ┌─────────────────────────────────────────┐
93
- │ Result Aggregation │
94
- │ Combine outputs, format, validate │
95
- └─────────────────────────────────────────┘
96
-
97
-
98
- Final Response
99
- ```
100
-
101
- ## 3. Requisitos Funcionais
102
-
103
- ### 3.1 API
104
-
105
- | ID | Requisito |
106
- |----|-----------|
107
- | API-001 | Endpoint de chat para interação com usuário |
108
- | API-002 | Endpoint para consultar status de processamento |
109
- | API-003 | Endpoint para listar agentes disponíveis |
110
- | API-004 | Streaming de respostas (SSE) |
111
- | API-005 | Autenticação via API Key |
112
-
113
- ### 3.2 Orchestrator
114
-
115
- | ID | Requisito |
116
- |----|-----------|
117
- | ORCH-001 | Análise de intenção do usuário |
118
- | ORCH-002 | Decomposição de tarefas complexas |
119
- | ORCH-003 | Roteamento para agentes especialistas |
120
- | ORCH-004 | Agregação de resultados |
121
- | ORCH-005 | Retry automático em falhas |
122
- | ORCH-006 | Timeout por subtarefa |
123
-
124
- ### 3.3 Agentes
125
-
126
- | ID | Requisito |
127
- |----|-----------|
128
- | AGT-001 | Research Agent com acesso a web search |
129
- | AGT-002 | Research Agent com RAG (vector search) |
130
- | AGT-003 | Analysis Agent para comparações |
131
- | AGT-004 | Analysis Agent para insights |
132
- | AGT-005 | Writing Agent para relatórios |
133
- | AGT-006 | Writing Agent para sumários |
134
-
135
- ### 3.4 Plugins
136
-
137
- | ID | Requisito |
138
- |----|-----------|
139
- | PLG-001 | WebSearch via Bing API |
140
- | PLG-002 | Document retrieval via vector store |
141
- | PLG-003 | Calculator para análises numéricas |
142
- | PLG-004 | Date/Time utilities |
143
-
144
- ### 3.5 Memória
145
-
146
- | ID | Requisito |
147
- |----|-----------|
148
- | MEM-001 | Conversation memory por sessão |
149
- | MEM-002 | Semantic memory para contexto relevante |
150
- | MEM-003 | Persistência opcional em Cosmos DB |
151
-
152
- ## 4. Requisitos Não-Funcionais
153
-
154
- ### 4.1 Performance
155
-
156
- | ID | Requisito |
157
- |----|-----------|
158
- | PERF-001 | Response streaming para UX fluida |
159
- | PERF-002 | Timeout máximo de 60s por request |
160
- | PERF-003 | Execução paralela de subtarefas independentes |
161
-
162
- ### 4.2 Custo
163
-
164
- | ID | Requisito |
165
- |----|-----------|
166
- | COST-001 | Limite de tokens por request configurável |
167
- | COST-002 | Uso de modelos menores para subtarefas simples |
168
- | COST-003 | Cache de resultados de pesquisa |
169
- | COST-004 | Tracking de uso de tokens |
170
-
171
- ### 4.3 Segurança
172
-
173
- | ID | Requisito |
174
- |----|-----------|
175
- | SEC-001 | API Key authentication |
176
- | SEC-002 | Rate limiting por API key |
177
- | SEC-003 | Input sanitization |
178
- | SEC-004 | Output filtering (PII, harmful content) |
179
-
180
- ## 5. Agentes em Detalhe
181
-
182
- ### 5.1 Orchestrator Agent
183
-
184
- **System Prompt**:
185
- ```
186
- You are an orchestrator agent responsible for coordinating other specialized agents.
187
-
188
- When you receive a user request:
189
- 1. Analyze the intent and complexity
190
- 2. Decompose into subtasks if needed
191
- 3. Delegate to appropriate specialist agents
192
- 4. Aggregate and format the final response
193
-
194
- Available agents:
195
- - research: For information gathering, web search, document retrieval
196
- - analysis: For data analysis, comparisons, insight generation
197
- - writing: For text generation, summaries, reports
198
-
199
- Respond with a plan in JSON format:
200
- {
201
- "understanding": "Brief summary of user's request",
202
- "subtasks": [
203
- {"agent": "research", "task": "specific task description"},
204
- {"agent": "analysis", "task": "specific task description"},
205
- {"agent": "writing", "task": "specific task description"}
206
- ]
207
- }
208
- ```
209
-
210
- ### 5.2 Research Agent
211
-
212
- **System Prompt**:
213
- ```
214
- You are a research specialist agent. Your capabilities include:
215
- - Searching the web for current information
216
- - Retrieving relevant documents from the knowledge base
217
- - Summarizing and extracting key information
218
-
219
- When researching:
220
- 1. Use web_search for current/recent information
221
- 2. Use document_search for internal knowledge
222
- 3. Synthesize findings into structured data
223
-
224
- Always cite your sources and indicate confidence level.
225
- ```
226
-
227
- **Plugins**:
228
- - `web_search(query, max_results)`
229
- - `document_search(query, limit)`
230
-
231
- ### 5.3 Analysis Agent
232
-
233
- **System Prompt**:
234
- ```
235
- You are an analysis specialist agent. Your capabilities include:
236
- - Analyzing data and identifying patterns
237
- - Comparing options and alternatives
238
- - Generating insights and recommendations
239
-
240
- When analyzing:
241
- 1. Structure the data clearly
242
- 2. Apply appropriate analytical frameworks
243
- 3. Provide evidence-based conclusions
244
-
245
- Be objective and highlight trade-offs.
246
- ```
247
-
248
- **Plugins**:
249
- - `calculate(expression)`
250
- - `compare(items, criteria)`
251
-
252
- ### 5.4 Writing Agent
253
-
254
- **System Prompt**:
255
- ```
256
- You are a writing specialist agent. Your capabilities include:
257
- - Generating clear, well-structured text
258
- - Creating summaries and reports
259
- - Adapting tone and style for the audience
260
-
261
- When writing:
262
- 1. Start with a clear structure
263
- 2. Use appropriate formatting
264
- 3. Be concise but comprehensive
265
-
266
- Match the requested format (report, summary, email, etc.).
267
- ```
268
-
269
- ## 6. Plugins em Detalhe
270
-
271
- ### 6.1 WebSearchPlugin
272
-
273
- ```csharp
274
- public class WebSearchPlugin
275
- {
276
- private readonly BingSearchService _searchService;
277
-
278
- [KernelFunction("web_search")]
279
- [Description("Search the web for information on a topic")]
280
- public async Task<SearchResults> SearchAsync(
281
- [Description("The search query")] string query,
282
- [Description("Maximum results to return")] int maxResults = 5)
283
- {
284
- var results = await _searchService.SearchAsync(query, maxResults);
285
- return new SearchResults
286
- {
287
- Query = query,
288
- Items = results.Select(r => new SearchResult
289
- {
290
- Title = r.Title,
291
- Snippet = r.Snippet,
292
- Url = r.Url
293
- }).ToList()
294
- };
295
- }
296
- }
297
- ```
298
-
299
- ### 6.2 DocumentPlugin
300
-
301
- ```csharp
302
- public class DocumentPlugin
303
- {
304
- private readonly IVectorStore _vectorStore;
305
- private readonly IEmbeddingService _embeddingService;
306
-
307
- [KernelFunction("document_search")]
308
- [Description("Search internal documents using semantic similarity")]
309
- public async Task<IEnumerable<DocumentResult>> SearchDocumentsAsync(
310
- [Description("The search query")] string query,
311
- [Description("Maximum documents")] int limit = 3)
312
- {
313
- var embedding = await _embeddingService.GetEmbeddingAsync(query);
314
- var documents = await _vectorStore.SearchAsync(embedding, limit);
315
-
316
- return documents.Select(d => new DocumentResult
317
- {
318
- Title = d.Title,
319
- Content = d.Content,
320
- Score = d.Score,
321
- Source = d.Source
322
- });
323
- }
324
- }
325
- ```
326
-
327
- ## 7. APIs
328
-
329
- ### 7.1 Chat Endpoint
330
-
331
- ```
332
- POST /api/chat
333
- Content-Type: application/json
334
-
335
- {
336
- "message": "Compare AWS, Azure and GCP for a SaaS startup",
337
- "sessionId": "optional-session-id",
338
- "stream": true
339
- }
340
-
341
- Response (streaming):
342
- data: {"type": "thinking", "content": "Analyzing request..."}
343
- data: {"type": "agent", "agent": "research", "status": "started"}
344
- data: {"type": "agent", "agent": "research", "status": "completed"}
345
- data: {"type": "content", "content": "Based on my analysis..."}
346
- data: {"type": "done", "usage": {"tokens": 1234}}
347
- ```
348
-
349
- ### 7.2 Agents Endpoint
350
-
351
- ```
352
- GET /api/agents
353
-
354
- Response:
355
- {
356
- "agents": [
357
- {
358
- "id": "orchestrator",
359
- "name": "Orchestrator Agent",
360
- "description": "Coordinates other agents",
361
- "capabilities": ["task_decomposition", "routing", "aggregation"]
362
- },
363
- {
364
- "id": "research",
365
- "name": "Research Agent",
366
- "description": "Information gathering specialist",
367
- "capabilities": ["web_search", "document_retrieval", "summarization"]
368
- }
369
- ]
370
- }
371
- ```
372
-
373
- ## 8. Modelo de Dados
374
-
375
- ### 8.1 Conversation
376
-
377
- ```csharp
378
- public class Conversation
379
- {
380
- public string Id { get; set; }
381
- public string UserId { get; set; }
382
- public List<Message> Messages { get; set; }
383
- public DateTime CreatedAt { get; set; }
384
- public DateTime UpdatedAt { get; set; }
385
- }
386
-
387
- public class Message
388
- {
389
- public string Id { get; set; }
390
- public MessageRole Role { get; set; } // User, Assistant, System
391
- public string Content { get; set; }
392
- public AgentMetadata? AgentMetadata { get; set; }
393
- public TokenUsage? Usage { get; set; }
394
- public DateTime Timestamp { get; set; }
395
- }
396
-
397
- public class AgentMetadata
398
- {
399
- public string AgentId { get; set; }
400
- public List<string> PluginsUsed { get; set; }
401
- public Dictionary<string, object> Metadata { get; set; }
402
- }
403
- ```
404
-
405
- ### 8.2 Agent Task
406
-
407
- ```csharp
408
- public class AgentTask
409
- {
410
- public string Id { get; set; }
411
- public string AgentId { get; set; }
412
- public string Description { get; set; }
413
- public TaskStatus Status { get; set; }
414
- public string? Input { get; set; }
415
- public string? Output { get; set; }
416
- public string? Error { get; set; }
417
- public TimeSpan Duration { get; set; }
418
- public TokenUsage Usage { get; set; }
419
- }
420
-
421
- public enum TaskStatus
422
- {
423
- Pending,
424
- Running,
425
- Completed,
426
- Failed
427
- }
428
- ```
429
-
430
- ## 9. Configuração
431
-
432
- ### 9.1 Azure OpenAI
433
-
434
- ```json
435
- {
436
- "AzureOpenAI": {
437
- "Endpoint": "https://{resource}.openai.azure.com/",
438
- "ApiKey": "{key}",
439
- "Deployments": {
440
- "Chat": "gpt-4",
441
- "ChatFast": "gpt-35-turbo",
442
- "Embedding": "text-embedding-ada-002"
443
- }
444
- }
445
- }
446
- ```
447
-
448
- ### 9.2 Agent Configuration
449
-
450
- ```json
451
- {
452
- "Agents": {
453
- "Orchestrator": {
454
- "Model": "gpt-4",
455
- "MaxTokens": 2000,
456
- "Temperature": 0.3
457
- },
458
- "Research": {
459
- "Model": "gpt-35-turbo",
460
- "MaxTokens": 1500,
461
- "Temperature": 0.5
462
- },
463
- "Analysis": {
464
- "Model": "gpt-35-turbo",
465
- "MaxTokens": 1500,
466
- "Temperature": 0.3
467
- },
468
- "Writing": {
469
- "Model": "gpt-4",
470
- "MaxTokens": 3000,
471
- "Temperature": 0.7
472
- }
473
- }
474
- }
475
- ```
476
-
477
- ---
478
-
479
- *MORPH-SPEC by Polymorphism Tech*
1
+ # Multi-Agent System - Especificação
2
+
3
+ ## 1. Visão Geral
4
+
5
+ Sistema de agentes de IA cooperativos usando Microsoft Semantic Kernel para resolver tarefas complexas através de decomposição e especialização.
6
+
7
+ ### 1.1 Objetivos
8
+
9
+ - Criar sistema escalável de agentes cooperativos
10
+ - Implementar orquestração inteligente de tarefas
11
+ - Fornecer extensibilidade para novos agentes e plugins
12
+ - Manter custos controlados com uso eficiente de tokens
13
+
14
+ ### 1.2 Use Cases
15
+
16
+ | Use Case | Agentes Envolvidos |
17
+ |----------|-------------------|
18
+ | Pesquisa de mercado | Orchestrator → Research → Analysis → Writing |
19
+ | Análise de documentos | Orchestrator → Research → Analysis |
20
+ | Geração de relatórios | Orchestrator → Research → Writing |
21
+ | Q&A com base de conhecimento | Orchestrator → Research |
22
+
23
+ ## 2. Arquitetura
24
+
25
+ ### 2.1 Componentes Principais
26
+
27
+ ```
28
+ ┌─────────────────────────────────────────────────────────────────┐
29
+ │ API Layer │
30
+ │ ┌─────────────────┐ ┌─────────────────┐ │
31
+ │ │ ChatEndpoints │ │ AgentEndpoints │ │
32
+ │ └─────────────────┘ └─────────────────┘ │
33
+ └─────────────────────────────────────────────────────────────────┘
34
+
35
+
36
+ ┌─────────────────────────────────────────────────────────────────┐
37
+ │ Orchestration Layer │
38
+ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
39
+ │ │ TaskDecomposer │ │ AgentRouter │ │ ResultAggregator│ │
40
+ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
41
+ └─────────────────────────────────────────────────────────────────┘
42
+
43
+
44
+ ┌─────────────────────────────────────────────────────────────────┐
45
+ │ Agent Layer │
46
+ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
47
+ │ │ Research │ │ Analysis │ │ Writing │ │
48
+ │ │ Agent │ │ Agent │ │ Agent │ │
49
+ │ └──────────────┘ └──────────────┘ └──────────────────────┘ │
50
+ └─────────────────────────────────────────────────────────────────┘
51
+
52
+
53
+ ┌─────────────────────────────────────────────────────────────────┐
54
+ │ Plugin Layer │
55
+ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
56
+ │ │ WebSearch │ │ Document │ │ DataAnalysis│ │
57
+ │ │ Plugin │ │ Plugin │ │ Plugin │ │
58
+ │ └─────────────┘ └─────────────┘ └─────────────┘ │
59
+ └─────────────────────────────────────────────────────────────────┘
60
+
61
+
62
+ ┌─────────────────────────────────────────────────────────────────┐
63
+ │ Infrastructure Layer │
64
+ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
65
+ │ │ Azure OpenAI │ │ Vector Store │ │ Memory Store │ │
66
+ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
67
+ └─────────────────────────────────────────────────────────────────┘
68
+ ```
69
+
70
+ ### 2.2 Fluxo de Dados
71
+
72
+ ```
73
+ User Request
74
+
75
+
76
+ ┌─────────────────────────────────────────┐
77
+ │ Task Decomposition │
78
+ │ "Compare cloud providers" → │
79
+ │ [Research AWS, Research Azure, │
80
+ │ Research GCP, Compare, Write Report] │
81
+ └─────────────────────────────────────────┘
82
+
83
+
84
+ ┌─────────────────────────────────────────┐
85
+ │ Agent Execution │
86
+ │ Research Agent → findings[] │
87
+ │ Analysis Agent → insights │
88
+ │ Writing Agent → report │
89
+ └─────────────────────────────────────────┘
90
+
91
+
92
+ ┌─────────────────────────────────────────┐
93
+ │ Result Aggregation │
94
+ │ Combine outputs, format, validate │
95
+ └─────────────────────────────────────────┘
96
+
97
+
98
+ Final Response
99
+ ```
100
+
101
+ ## 3. Requisitos Funcionais
102
+
103
+ ### 3.1 API
104
+
105
+ | ID | Requisito |
106
+ |----|-----------|
107
+ | API-001 | Endpoint de chat para interação com usuário |
108
+ | API-002 | Endpoint para consultar status de processamento |
109
+ | API-003 | Endpoint para listar agentes disponíveis |
110
+ | API-004 | Streaming de respostas (SSE) |
111
+ | API-005 | Autenticação via API Key |
112
+
113
+ ### 3.2 Orchestrator
114
+
115
+ | ID | Requisito |
116
+ |----|-----------|
117
+ | ORCH-001 | Análise de intenção do usuário |
118
+ | ORCH-002 | Decomposição de tarefas complexas |
119
+ | ORCH-003 | Roteamento para agentes especialistas |
120
+ | ORCH-004 | Agregação de resultados |
121
+ | ORCH-005 | Retry automático em falhas |
122
+ | ORCH-006 | Timeout por subtarefa |
123
+
124
+ ### 3.3 Agentes
125
+
126
+ | ID | Requisito |
127
+ |----|-----------|
128
+ | AGT-001 | Research Agent com acesso a web search |
129
+ | AGT-002 | Research Agent com RAG (vector search) |
130
+ | AGT-003 | Analysis Agent para comparações |
131
+ | AGT-004 | Analysis Agent para insights |
132
+ | AGT-005 | Writing Agent para relatórios |
133
+ | AGT-006 | Writing Agent para sumários |
134
+
135
+ ### 3.4 Plugins
136
+
137
+ | ID | Requisito |
138
+ |----|-----------|
139
+ | PLG-001 | WebSearch via Bing API |
140
+ | PLG-002 | Document retrieval via vector store |
141
+ | PLG-003 | Calculator para análises numéricas |
142
+ | PLG-004 | Date/Time utilities |
143
+
144
+ ### 3.5 Memória
145
+
146
+ | ID | Requisito |
147
+ |----|-----------|
148
+ | MEM-001 | Conversation memory por sessão |
149
+ | MEM-002 | Semantic memory para contexto relevante |
150
+ | MEM-003 | Persistência opcional em Cosmos DB |
151
+
152
+ ## 4. Requisitos Não-Funcionais
153
+
154
+ ### 4.1 Performance
155
+
156
+ | ID | Requisito |
157
+ |----|-----------|
158
+ | PERF-001 | Response streaming para UX fluida |
159
+ | PERF-002 | Timeout máximo de 60s por request |
160
+ | PERF-003 | Execução paralela de subtarefas independentes |
161
+
162
+ ### 4.2 Custo
163
+
164
+ | ID | Requisito |
165
+ |----|-----------|
166
+ | COST-001 | Limite de tokens por request configurável |
167
+ | COST-002 | Uso de modelos menores para subtarefas simples |
168
+ | COST-003 | Cache de resultados de pesquisa |
169
+ | COST-004 | Tracking de uso de tokens |
170
+
171
+ ### 4.3 Segurança
172
+
173
+ | ID | Requisito |
174
+ |----|-----------|
175
+ | SEC-001 | API Key authentication |
176
+ | SEC-002 | Rate limiting por API key |
177
+ | SEC-003 | Input sanitization |
178
+ | SEC-004 | Output filtering (PII, harmful content) |
179
+
180
+ ## 5. Agentes em Detalhe
181
+
182
+ ### 5.1 Orchestrator Agent
183
+
184
+ **System Prompt**:
185
+ ```
186
+ You are an orchestrator agent responsible for coordinating other specialized agents.
187
+
188
+ When you receive a user request:
189
+ 1. Analyze the intent and complexity
190
+ 2. Decompose into subtasks if needed
191
+ 3. Delegate to appropriate specialist agents
192
+ 4. Aggregate and format the final response
193
+
194
+ Available agents:
195
+ - research: For information gathering, web search, document retrieval
196
+ - analysis: For data analysis, comparisons, insight generation
197
+ - writing: For text generation, summaries, reports
198
+
199
+ Respond with a plan in JSON format:
200
+ {
201
+ "understanding": "Brief summary of user's request",
202
+ "subtasks": [
203
+ {"agent": "research", "task": "specific task description"},
204
+ {"agent": "analysis", "task": "specific task description"},
205
+ {"agent": "writing", "task": "specific task description"}
206
+ ]
207
+ }
208
+ ```
209
+
210
+ ### 5.2 Research Agent
211
+
212
+ **System Prompt**:
213
+ ```
214
+ You are a research specialist agent. Your capabilities include:
215
+ - Searching the web for current information
216
+ - Retrieving relevant documents from the knowledge base
217
+ - Summarizing and extracting key information
218
+
219
+ When researching:
220
+ 1. Use web_search for current/recent information
221
+ 2. Use document_search for internal knowledge
222
+ 3. Synthesize findings into structured data
223
+
224
+ Always cite your sources and indicate confidence level.
225
+ ```
226
+
227
+ **Plugins**:
228
+ - `web_search(query, max_results)`
229
+ - `document_search(query, limit)`
230
+
231
+ ### 5.3 Analysis Agent
232
+
233
+ **System Prompt**:
234
+ ```
235
+ You are an analysis specialist agent. Your capabilities include:
236
+ - Analyzing data and identifying patterns
237
+ - Comparing options and alternatives
238
+ - Generating insights and recommendations
239
+
240
+ When analyzing:
241
+ 1. Structure the data clearly
242
+ 2. Apply appropriate analytical frameworks
243
+ 3. Provide evidence-based conclusions
244
+
245
+ Be objective and highlight trade-offs.
246
+ ```
247
+
248
+ **Plugins**:
249
+ - `calculate(expression)`
250
+ - `compare(items, criteria)`
251
+
252
+ ### 5.4 Writing Agent
253
+
254
+ **System Prompt**:
255
+ ```
256
+ You are a writing specialist agent. Your capabilities include:
257
+ - Generating clear, well-structured text
258
+ - Creating summaries and reports
259
+ - Adapting tone and style for the audience
260
+
261
+ When writing:
262
+ 1. Start with a clear structure
263
+ 2. Use appropriate formatting
264
+ 3. Be concise but comprehensive
265
+
266
+ Match the requested format (report, summary, email, etc.).
267
+ ```
268
+
269
+ ## 6. Plugins em Detalhe
270
+
271
+ ### 6.1 WebSearchPlugin
272
+
273
+ ```csharp
274
+ public class WebSearchPlugin
275
+ {
276
+ private readonly BingSearchService _searchService;
277
+
278
+ [KernelFunction("web_search")]
279
+ [Description("Search the web for information on a topic")]
280
+ public async Task<SearchResults> SearchAsync(
281
+ [Description("The search query")] string query,
282
+ [Description("Maximum results to return")] int maxResults = 5)
283
+ {
284
+ var results = await _searchService.SearchAsync(query, maxResults);
285
+ return new SearchResults
286
+ {
287
+ Query = query,
288
+ Items = results.Select(r => new SearchResult
289
+ {
290
+ Title = r.Title,
291
+ Snippet = r.Snippet,
292
+ Url = r.Url
293
+ }).ToList()
294
+ };
295
+ }
296
+ }
297
+ ```
298
+
299
+ ### 6.2 DocumentPlugin
300
+
301
+ ```csharp
302
+ public class DocumentPlugin
303
+ {
304
+ private readonly IVectorStore _vectorStore;
305
+ private readonly IEmbeddingService _embeddingService;
306
+
307
+ [KernelFunction("document_search")]
308
+ [Description("Search internal documents using semantic similarity")]
309
+ public async Task<IEnumerable<DocumentResult>> SearchDocumentsAsync(
310
+ [Description("The search query")] string query,
311
+ [Description("Maximum documents")] int limit = 3)
312
+ {
313
+ var embedding = await _embeddingService.GetEmbeddingAsync(query);
314
+ var documents = await _vectorStore.SearchAsync(embedding, limit);
315
+
316
+ return documents.Select(d => new DocumentResult
317
+ {
318
+ Title = d.Title,
319
+ Content = d.Content,
320
+ Score = d.Score,
321
+ Source = d.Source
322
+ });
323
+ }
324
+ }
325
+ ```
326
+
327
+ ## 7. APIs
328
+
329
+ ### 7.1 Chat Endpoint
330
+
331
+ ```
332
+ POST /api/chat
333
+ Content-Type: application/json
334
+
335
+ {
336
+ "message": "Compare AWS, Azure and GCP for a SaaS startup",
337
+ "sessionId": "optional-session-id",
338
+ "stream": true
339
+ }
340
+
341
+ Response (streaming):
342
+ data: {"type": "thinking", "content": "Analyzing request..."}
343
+ data: {"type": "agent", "agent": "research", "status": "started"}
344
+ data: {"type": "agent", "agent": "research", "status": "completed"}
345
+ data: {"type": "content", "content": "Based on my analysis..."}
346
+ data: {"type": "done", "usage": {"tokens": 1234}}
347
+ ```
348
+
349
+ ### 7.2 Agents Endpoint
350
+
351
+ ```
352
+ GET /api/agents
353
+
354
+ Response:
355
+ {
356
+ "agents": [
357
+ {
358
+ "id": "orchestrator",
359
+ "name": "Orchestrator Agent",
360
+ "description": "Coordinates other agents",
361
+ "capabilities": ["task_decomposition", "routing", "aggregation"]
362
+ },
363
+ {
364
+ "id": "research",
365
+ "name": "Research Agent",
366
+ "description": "Information gathering specialist",
367
+ "capabilities": ["web_search", "document_retrieval", "summarization"]
368
+ }
369
+ ]
370
+ }
371
+ ```
372
+
373
+ ## 8. Modelo de Dados
374
+
375
+ ### 8.1 Conversation
376
+
377
+ ```csharp
378
+ public class Conversation
379
+ {
380
+ public string Id { get; set; }
381
+ public string UserId { get; set; }
382
+ public List<Message> Messages { get; set; }
383
+ public DateTime CreatedAt { get; set; }
384
+ public DateTime UpdatedAt { get; set; }
385
+ }
386
+
387
+ public class Message
388
+ {
389
+ public string Id { get; set; }
390
+ public MessageRole Role { get; set; } // User, Assistant, System
391
+ public string Content { get; set; }
392
+ public AgentMetadata? AgentMetadata { get; set; }
393
+ public TokenUsage? Usage { get; set; }
394
+ public DateTime Timestamp { get; set; }
395
+ }
396
+
397
+ public class AgentMetadata
398
+ {
399
+ public string AgentId { get; set; }
400
+ public List<string> PluginsUsed { get; set; }
401
+ public Dictionary<string, object> Metadata { get; set; }
402
+ }
403
+ ```
404
+
405
+ ### 8.2 Agent Task
406
+
407
+ ```csharp
408
+ public class AgentTask
409
+ {
410
+ public string Id { get; set; }
411
+ public string AgentId { get; set; }
412
+ public string Description { get; set; }
413
+ public TaskStatus Status { get; set; }
414
+ public string? Input { get; set; }
415
+ public string? Output { get; set; }
416
+ public string? Error { get; set; }
417
+ public TimeSpan Duration { get; set; }
418
+ public TokenUsage Usage { get; set; }
419
+ }
420
+
421
+ public enum TaskStatus
422
+ {
423
+ Pending,
424
+ Running,
425
+ Completed,
426
+ Failed
427
+ }
428
+ ```
429
+
430
+ ## 9. Configuração
431
+
432
+ ### 9.1 Azure OpenAI
433
+
434
+ ```json
435
+ {
436
+ "AzureOpenAI": {
437
+ "Endpoint": "https://{resource}.openai.azure.com/",
438
+ "ApiKey": "{key}",
439
+ "Deployments": {
440
+ "Chat": "gpt-4",
441
+ "ChatFast": "gpt-35-turbo",
442
+ "Embedding": "text-embedding-ada-002"
443
+ }
444
+ }
445
+ }
446
+ ```
447
+
448
+ ### 9.2 Agent Configuration
449
+
450
+ ```json
451
+ {
452
+ "Agents": {
453
+ "Orchestrator": {
454
+ "Model": "gpt-4",
455
+ "MaxTokens": 2000,
456
+ "Temperature": 0.3
457
+ },
458
+ "Research": {
459
+ "Model": "gpt-35-turbo",
460
+ "MaxTokens": 1500,
461
+ "Temperature": 0.5
462
+ },
463
+ "Analysis": {
464
+ "Model": "gpt-35-turbo",
465
+ "MaxTokens": 1500,
466
+ "Temperature": 0.3
467
+ },
468
+ "Writing": {
469
+ "Model": "gpt-4",
470
+ "MaxTokens": 3000,
471
+ "Temperature": 0.7
472
+ }
473
+ }
474
+ }
475
+ ```
476
+
477
+ ---
478
+
479
+ *MORPH-SPEC by Polymorphism Tech*