Framework .NET moderno para criação de agentes de IA com workflows avançados, memória inteligente e orquestração multi-agente
O AgentSharp é um framework para .NET que facilita a criação de agentes de IA robustos, escaláveis e extensíveis. Com arquitetura otimizada, oferece controle granular sobre custos, sistema de memória avançado com busca vetorial, orquestração de equipes de agentes e uma plataforma flexível para casos de uso empresariais.
- Agentes Tipados: Contratos claros com tipos de entrada e saída
- Raciocínio Estruturado: Análise step-by-step com reasoning chains
- Output Estruturado: Desserialização automática para tipos complexos
- Ferramentas Extensíveis: Sistema de plugins via Tool Packs
- Memória Semântica: Busca inteligente por contexto com embeddings
- Busca Vetorial: Implementação otimizada com sqlite-vec
- Multiple Storage: SemanticSqliteStorage (persistent), SemanticMemoryStorage (in-memory)
- Controle de Custos: Opções de baixo e alto custo conforme necessidade
- Team Orchestration: Coordinate, Route e Collaborate modes
- Workflows Avançados: Sequential, Parallel e Conditional
- Handoff System: Transferência inteligente entre agentes
- Load Balancing: Distribuição automática de cargas
- Modo Anônimo: Funciona sem sistema de autenticação
- Observabilidade: Logging e métricas integrados
- Performance: Arquitetura otimizada para alto desempenho
- Extensibilidade: APIs abertas para customização empresarial
dotnet add package AgentSharpusing AgentSharp.Core;
using AgentSharp.Models;
// Configurar modelo
var model = new ModelFactory().CreateModel("openai", new ModelOptions
{
    ApiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY"),
    ModelName = "gpt-4"
});
// Criar agente
var agent = new Agent<string, string>(model, "Assistente")
    .WithPersona("Você é um assistente útil e direto");
// Executar
var resultado = await agent.ExecuteAsync("Como funciona uma LLM?");
Console.WriteLine(resultado.Data);// Configurar storage com busca vetorial otimizada
var embeddingService = new OpenAIEmbeddingService(apiKey);
var storage = new SemanticSqliteStorage("Data Source=memoria.db", embeddingService, 1536);
await storage.InitializeAsync();
// Criar agente com memória semântica
var agent = new Agent<Context, string>(model, "Assistente Inteligente")
    .WithSemanticMemory(storage, embeddingService)
    .WithPersona("Assistente que lembra do contexto das conversas e aprende com cada interação")
    .WithContext(new Context { UserId = "user123", SessionId = "session456" });
var resultado = await agent.ExecuteAsync("Prefiro café forte pela manhã, mas leve à tarde");
var resultado = await agent.ExecuteAsync("Como prefiro Café ?");// Definir contexto
public class AnaliseContext
{
    public string Entrada { get; set; }
    public string Dados { get; set; }
    public string Resultado { get; set; }
}
// Criar agentes especializados
var coletor = new Agent<AnaliseContext, string>(model, "Coletor");
var analista = new Agent<AnaliseContext, string>(model, "Analista");
// Configurar workflow
var workflow = new SequentialWorkflow<AnaliseContext, string>("Análise")
    .RegisterStep("Coleta", coletor,
        ctx => $"Colete dados sobre: {ctx.Entrada}",
        (ctx, res) => ctx.Dados = res)
    .RegisterStep("Análise", analista,
        ctx => $"Analise os dados: {ctx.Dados}",
        (ctx, res) => ctx.Resultado = res);
// Executar
var contexto = new AnaliseContext { Entrada = "mercado financeiro" };
var resultado = await workflow.ExecuteAsync(contexto);public class Relatorio
{
    public string Titulo { get; set; }
    public List<string> Pontos { get; set; }
    public double Confianca { get; set; }
}
// Agente com output tipado
var gerador = new Agent<string, Relatorio>(model, "Gerador de Relatório");
var relatorio = await gerador.ExecuteAsync("Crie um relatório sobre projetos de IA com os 5 principais tópicos e a confiança da informação");
Console.WriteLine($"Título: {relatorio.Data.Titulo}"); 
Console.WriteLine($"Confiança: {relatorio.Data.Confianca:P}");// Configurar contexto para equipe
public class ProjetoContext
{
    public string Requisitos { get; set; }
    public string UserId { get; set; }
    public string SessionId { get; set; }
}
// Criar agentes especializados
var arquiteto = new Agent<ProjetoContext, string>(model, "Arquiteto")
    .WithPersona("Especialista em arquitetura de software")
    .WithSemanticMemory(storage);
var desenvolvedor = new Agent<ProjetoContext, string>(model, "Desenvolvedor") 
    .WithPersona("Desenvolvedor full-stack experiente")
    .WithSemanticMemory(storage);
var revisor = new Agent<ProjetoContext, string>(model, "Revisor")
    .WithPersona("Especialista em code review e qualidade")
    .WithSemanticMemory(storage);
// Configurar orquestração em modo Coordinate
var team = new TeamOrchestrator<ProjetoContext, string>()
    .AddAgent("arquiteto", arquiteto)
    .AddAgent("desenvolvedor", desenvolvedor) 
    .AddAgent("revisor", revisor)
    .WithMode(TeamMode.Coordinate)
    .WithCoordinator("arquiteto")
    .WithHandoffRules("desenvolvimento -> revisao -> entrega");
// Executar projeto colaborativo
var contexto = new ProjetoContext 
{ 
    Requisitos = "Sistema todo list CLI em c#",
    UserId = "pm001",
    SessionId = Guid.NewGuid().ToString()
};
var resultado = await team.ExecuteAsync("Desenvolver sistema completo", contexto);O AgentSharp oferece arquitetura de memória otimizada com duas implementações principais:
- Performance: Busca vetorial nativa com sqlite-vec
- Escalabilidade: Suporta milhões de embeddings
- Complexidade: O(log n) para consultas de similaridade
- Caso de uso: Sistemas empresariais com grandes volumes de dados
- Performance: HNSW em memória otimizado
- Rapidez: Inicialização instantânea para testes
- Limitações: Adequado para datasets menores
- Caso de uso: Desenvolvimento, prototipação e testes
// Produção - com sqlite-vec
var prodStorage = new SemanticSqliteStorage(
    connectionString: "Data Source=production.db",
    embeddingService: new OpenAIEmbeddingService(apiKey),
    dimensions: 1536
);
// Desenvolvimento - HNSW em memória  
var devStorage = new SemanticMemoryStorage(
    new CompactHNSWConfiguration
    {
        Dimensions = 384, // Dimensões reduzidas para desenvolvimento
        MaxConnections = 16,
        SearchK = 200
    }
);
// Agente adaptativo para diferentes ambientes
var agent = new Agent<Context, string>(model, "Assistant")
    .WithSemanticMemory(Environment.IsProduction() ? prodStorage : devStorage)
    .WithPersona("Assistente que se adapta ao ambiente de execução");// Tool customizada
public class CalculadoraTool : ITool
{
    public string Name => "calculadora";
    public string Description => "Realiza cálculos matemáticos";
    
    public async Task<string> ExecuteAsync(string input)
    {
        // Implementação da calculadora
        return RealizarCalculo(input);
    }
}
// Usar com agente
var agente = new Agent<string, string>(model, "Matemático")
    .WithTools(new MathToolPack())
    .AddTool(new CalculadoraTool());- 🚀 Início Rápido - Primeiros passos e instalação
- 🎯 Conceitos Fundamentais - Arquitetura e conceitos base
- 🧠 Sistema de Memória - Guia completo de memória e storage
- 🤖 API do Agent - Referência completa da API
- 🔄 Workflows Avançados - Orquestração e multi-agentes
- 🧮 Raciocínio Estruturado - Sistema de reasoning
- 📊 Exemplos Práticos - Casos de uso reais
- 🏢 Casos Empresariais - Implementação em produção
- 🚀 Quick Start - Installation and first steps
- 🎯 Core Concepts - Architecture and base concepts
- 🧠 Memory System - Complete memory and storage guide
- 🤖 Agent API - Complete API reference
- 🔄 Advanced Workflows - Orchestration and multi-agents
- 🧮 Structured Reasoning - Reasoning system
- 📊 Practical Examples - Real-world use cases
- 🏢 Enterprise Cases - Production implementation
Explore 27+ exemplos interativos no projeto AgentSharp.console:
- Nível 1: Fundamentos (Agentes básicos, personalidade, tools)
- Nível 2: Intermediário (Reasoning, outputs estruturados, memória)
- Nível 3: Avançado (Workflows, busca semântica, sistemas empresariais)
- Especializados: Assistentes médicos, jurídicos, consultores técnicos
- Team Orchestration: Coordenação de equipes de agentes
# Executar console interativo
cd AgentSharp.console
dotnet run- Assistentes Médicos: Diagnóstico auxiliado com histórico do paciente
- Análise de Exames: Processamento estruturado de laudos médicos
- Gestão Hospitalar: Otimização de fluxos e recursos
- Consultoria Jurídica: Análise de contratos e documentos legais
- Due Diligence: Auditoria automatizada de documentos empresariais
- Compliance: Monitoramento de conformidade regulatória
- Assistentes Virtuais: Atendimento ao cliente de alta qualidade
- Análise Financeira: Processamento de dados com contexto histórico
- Gestão de Conhecimento: Base de conhecimento empresarial inteligente
- Code Review: Revisão automatizada de código com contexto
- DevOps: Automação de workflows complexos com tomada de decisão
- Documentação: Geração automática de documentação técnica
- Tutores Virtuais: Ensino personalizado com histórico do estudante
- Avaliação: Correção e feedback automatizado
- Pesquisa Acadêmica: Análise de literatura científica
┌──────────────────────┐
│   Team Orchestrator  │  🤖 Orquestração Multi-Agente
├──────────────────────┤  ├─ Coordinate Mode
│ • TeamMode.Route     │  ├─ Route Mode  
│ • TeamMode.Coordinate│  └─ Collaborate Mode
│ • TeamMode.Collaborate│
└──────┬───────────────┘
       │
┌──────▼───────────────┐
│       Agent          │  🎯 Agente Inteligente
├──────────────────────┤  ├─ Typed Inputs/Outputs
│ • Persona & Context  │  ├─ Structured Reasoning
│ • Tool System        │  ├─ Memory Integration
│ • Memory Manager     │  └─ Extensible Tools
│ • Reasoning Engine   │
└──────┬───────────────┘
       │
┌──────▼───────────────┐    ┌─────────────────────┐
│   Memory System      │    │   Vector Storage    │
├──────────────────────┤    ├─────────────────────┤
│ • Semantic Search    │◄──►│ • VectorSqliteVec   │  🧠 Sistema de Memória
│ • Context Loading    │    │ • CompactHNSW       │     Otimizado
│ • Smart Summarization│    │ • Embedding Service │
│ • Cost Control       │    │ • Similarity Search │
└──────────────────────┘    └─────────────────────┘
       │
┌──────▼───────────────┐    ┌─────────────────────┐
│     Workflows        │    │   Model Factory     │
├──────────────────────┤    ├─────────────────────┤
│ • Sequential         │    │ • OpenAI GPT-4      │  ⚡ Extensibilidade
│ • Parallel           │    │ • Azure OpenAI      │     e Integração
│ • Conditional        │    │ • Custom Models     │
│ • Advanced Routing   │    │ • Provider Agnostic │
└──────────────────────┘    └─────────────────────┘
- 🏃♂️ SemanticSqliteStorage: Busca vetorial nativa de alta performance
- 💡 SemanticMemoryStorage: HNSW otimizado para desenvolvimento
- SqliteStorage- Substituído por SemanticSqliteStorage
- VectorSqliteStorage- Performance inadequada
- HNSWMemoryStorage- Complexidade desnecessária
- InMemoryStorage- Limitações de busca semântica
🎯 Resultado da Otimização: 60% redução na complexidade com melhoria significativa de performance
# API Configuration
OPENAI_API_KEY=sua-chave-aqui
OPENAI_ENDPOINT=https://api.openai.com  # opcional
# Model Configuration  
MODEL_NAME=gpt-4o-mini  # ou gpt-4, gpt-3.5-turbo
TEMPERATURE=0.7         # 0.0 a 1.0
MAX_TOKENS=2048        # limite de tokens
# Memory Configuration
EMBEDDING_MODEL=text-embedding-3-small  # ou text-embedding-ada-002
VECTOR_DIMENSIONS=1536                   # dimensões do modelo de embeddingvar options = new ModelOptions
{
    ModelName = "gpt-4",
    ApiKey = apiKey,
    DefaultConfiguration = new ModelConfiguration
    {
        Temperature = 0.7,
        MaxTokens = 2048
    }
};Contribuições são bem-vindas! Por favor:
- Faça fork do projeto
- Crie uma branch para sua feature
- Adicione testes para novas funcionalidades
- Mantenha a documentação atualizada
- Envie um Pull Request
Este projeto está licenciado sob a Licença MIT. Veja LICENSE para mais detalhes.
- OpenAI pela API de modelos de linguagem
- sqlite-vec pela extensão de busca vetorial
- Comunidade .NET pelo ecossistema robusto
AgentSharp - Framework .NET para agentes de IA modernos