microsoft / dsl-copilot

MIT License
29 stars 6 forks source link

Agentic Architecture #30

Closed Tyler-R-Kendrick closed 2 months ago

Tyler-R-Kendrick commented 2 months ago

Architecture migration considerations

Reducing context window

Conversation history made specific to specific operations (generating code in accordance with a grammar, validating code, regenerating with feedback, etc.) helps to reduce token usage and improve response quality by keeping logical threads topical across agents.

Better logging / traceability

With more context specific operations from a multi-agent architecture, traceability is made easier - especially in situations where agents may use the same plugins.

Model flexibility

It is much easier to configure different models for different agents, than specifying different models for plugins. This could allow for fine-tuned models for specific tasks, or simply cheaper models to be used for graceful service degredation.

Greater extensibility and community support

A multi-agent architecture is easy to extend and plug into. Because a demonstration of this pattern is increasingly being requested, this project could better serve community requests by demonstrating the pattern.

Agent candidates

Code generator

The code generator uses RAG to optionally implement zero, one, and few-shot prompting techniques with language definitions, examples of positive use-cases, and examples of negative use cases.

Code validator

The code validator uses lexers/parsers to generate errors unless successful. It implements recursive chain of feedback to isolate the validation thread for a single piece of generated code - until the code is valid, or an exit criteria is satisfied.

Code Custodian

The code custodian cleans the code, formats it, and annotates it (if configured to do so). Linting and Sanitization should be in scope.

Code Sentinel

The sentinel implements security checks to make sure the generated code isn't malicious - and attempts to implement Responsible AI practices.

Code Trainer

* trains ml pipelines for custodian, validator, generator, etc.
* Uses different chunking strategies based on known grammars for top level (first-class) objects of the language.