O GEPA (Genetic-Pareto) é uma estrutura para otimizar vários tipos de componentes de texto em sistemas de IA. Esses componentes textuais podem ser prompts, trechos de código ou arquivos de configuração para modelos de IA. Ele usa uma abordagem chamada Reflective Text Evolution para analisar e refletir sobre o comportamento dos sistemas de IA por meio de Large Language Models (LLMs). Especificamente, o GEPA examina os registros de execução e avaliação gerados durante a operação do sistema e usa essas informações para direcionar melhorias. A estrutura combina estratégias como mutação iterativa, reflexão e seleção ótima de Pareto para desenvolver uma versão de melhor desempenho do sistema com um número limitado de avaliações. O GEPA não apenas otimiza componentes individuais, mas também desenvolve de forma colaborativa vários componentes em um sistema modular, resultando em ganhos significativos de desempenho em domínios específicos. De acordo com seu artigo de pesquisa "GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning", o GEPA demonstra maior eficiência do que os métodos tradicionais de aprendizagem por reforço, melhorando o desempenho e exigindo um número significativamente menor de amostras.
Lista de funções
- Evolução do texto reflexivoDescrição: analisar as trajetórias de execução do sistema (por exemplo, processos de raciocínio, invocações de ferramentas e resultados) usando modelos de linguagem grande (LLMs) para diagnosticar problemas e propor melhorias na forma de linguagem natural.
- Otimização multiobjetivoConclusão: O uso de um mecanismo de seleção Pareto-ótimo permite a otimização simultânea de vários objetivos (por exemplo, reduzir o comprimento das palavras-chave e, ao mesmo tempo, garantir a precisão) e a retenção de uma gama diversificada de bons candidatos.
- Alta eficiência de amostragemGEPA: o GEPA pode obter ganhos significativos de desempenho com pouquíssimas amostras ("rollouts") em comparação com os métodos tradicionais de aprendizado por reforço que exigem milhares de tentativas, reduzindo o número de amostras necessárias em até 35 vezes.
- Ampla gama de aplicabilidadeOtimização: Otimize não apenas palavras-chave de IA, mas também códigos, instruções e programas completos de IA, como
DSPyAssinaturas, módulos e fluxo de controle em um programa. - Interface de adaptador flexívelPor meio da realização de
GEPAAdapteros usuários podem integrar o GEPA em qualquer sistema que contenha componentes de texto. No centro da integração do sistema está a definição deEvaluate(Avaliação) eExtract Traces for Reflection(Extração de trajetórias reflexivas) Dois métodos. - Integração com a estrutura DSPyA GEPA foi diretamente integrada ao
DSPyo usuário pode usar a estruturadspy.GEPAA API é fácil de chamar, o que é a maneira mais fácil e poderosa de usar o GEPA. - Suporte para otimização de sistemas complexosGEPA: O GEPA é capaz de otimizar sistemas complexos de IA, como sistemas RAG (Retrieval Augmented Generation), inteligências de conversação em várias rodadas e inteligências que operam em ambientes externos (por exemplo, a inteligência de dados).
terminal-bench).
Usando a Ajuda
O GEPA é uma estrutura avançada projetada para otimizar automaticamente os componentes textuais dos sistemas de IA, como prompts ou códigos, imitando o modelo de aprendizado humano de "refletir e melhorar". Veja abaixo uma descrição detalhada de como usar o GEPA.
montagem
O GEPA pode ser facilmente instalado com o pip, o gerenciador de pacotes do Python.
Instalação de versão estável:
Abra um terminal ou uma ferramenta de linha de comando e digite o seguinte comando:
pip install gepa
A versão de desenvolvimento mais recente está instalada:
Se quiser experimentar os recursos mais recentes, você poderá instalá-los diretamente do repositório do GitHub:
pip install git+https://github.com/gepa-ai/gepa.git
Conceitos básicos
O uso eficaz da GEPA requer a compreensão de seus dois conceitos principais:
- ReflexãoDescrição: o mecanismo central do GEPA. Em vez de verificar se uma tarefa foi bem-sucedida (ou seja, uma pontuação simples), ele permite que um modelo de linguagem poderoso (chamado de "modelo reflexivo") leia um rastro de toda a execução da tarefa. Esse registro contém todas as etapas de "pensamento" da IA, resultados intermediários, erros encontrados etc. Ao ler esse registro detalhado, o modelo reflexivo é capaz de determinar se a tarefa foi bem-sucedida ou não (ou seja, uma pontuação simples). Ao ler esses registros detalhados, o modelo reflexivo pode fazer sugestões específicas e direcionadas de aprimoramento em linguagem natural.
- EvoluçãoDescrição: O GEPA baseia-se na ideia de um algoritmo genético. Ele começa com uma palavra-chave inicial ("semente") e gera várias versões novas e potencialmente melhores da palavra-chave por meio de reflexão ("variações"). Em seguida, ele testa essas novas versões e retém o lote de melhor desempenho ("seleção"). Esse processo é repetido várias vezes, com cada geração otimizando sua antecessora e, por fim, desenvolvendo palavras-chave de alto desempenho.
Maneira mais fácil de usar: por meio da estrutura DSPy
Para a maioria dos usuários, a combinação do GEPA com oDSPyUma combinação de estruturas é a abordagem mais recomendada.DSPypode ajudá-lo a criar programas modulares de modelo de linguagem, e o GEPA atua como um otimizador para melhorar o desempenho desses programas.
Abaixo está um exemplo simples de otimização de uma palavra-chave de solução matemática:
Etapa 1: preparar o ambiente e os dados
Certifique-se de que você tenha instalado ogeparesponder cantandodspy-aie configure sua chave de API da OpenAI.
import gepa
import dspy
# 设置大语言模型
task_lm = dspy.OpenAI(model='gpt-4.1-mini', max_tokens=1000)
# 设置一个更强大的模型用于反思
reflection_lm = dspy.OpenAI(model='gpt-5', max_tokens=3500)
dspy.settings.configure(lm=task_lm)
# 加载数据集(这里使用内置的AIME数学竞赛题示例)
trainset, valset, _ = gepa.examples.aime.init_dataset()
Etapa 2: Definir o procedimento inicial (ou palavra-chave)
existirDSPyno qual você pode definir um simplesSignaturepara descrever as entradas e saídas da tarefa e, em seguida, usar umModulepara que isso aconteça.
class CoT(dspy.Module):
def __init__(self):
super().__init__()
self.prog = dspy.ChainOfThought("problem -> reasoning, answer")
def forward(self, problem):
return self.prog(problem=problem)
Etapa 3: Definir indicadores de avaliação
Você precisa informar ao GEPA como saber se um resultado é bom ou ruim. Aqui definimos uma métrica simples que verifica se o modelo produz a resposta correta.
def aime_metric(gold, pred, trace=None):
# gold是标准答案,pred是模型的预测输出
return gold.answer == pred.answer
Etapa 4: Execute o GEPA Optimiser
Agora você pode configurar e executardspy.GEPAOtimizador agora.
from dspy.teleprompt import GEPA
# 配置优化器
# dspy_program是你要优化的DSPy程序
# trainset是训练数据
# valset是验证数据
# metric是评估函数
# reflection_lm是用于反思的模型
optimizer = GEPA(dspy_program=CoT(),
trainset=trainset,
valset=valset,
metric=aime_metric,
reflection_lm=reflection_lm)
# 运行优化,设置优化预算(例如,最多调用评估指标150次)
optimized_program = optimizer.compile(max_metric_calls=150)
Após a implementação dooptimized_programAs palavras-chave internas já foram otimizadas pelo GEPA. Você verá que as palavras-chave otimizadas contêm estratégias de solução muito específicas e detalhadas e notas que o GEPA aprende automaticamente ao refletir sobre erros históricos.
Uso independente do GEPA (uso avançado)
Se não estiver usandoDSPyNesse ponto, você precisará implementar sua própria estrutura deGEPAAdapterO GEPA é um sistema de gerenciamento de dados que funciona como uma ponte entre o GEPA e seu sistema.
GEPAAdapterDois métodos principais precisam ser implementados:
Evaluate(self, candidate, trainset_sample):- Esse método recebe um componente de texto candidato gerado pelo GEPA (
candidate) e uma parte dos dados de treinamento (trainset_sample). - Você precisa executar seu sistema com esse componente candidato e retornar a pontuação de execução do sistema e os traços de execução detalhados (traços). Os rastros podem ser qualquer informação textual que seja útil para reflexão.
- Esse método recebe um componente de texto candidato gerado pelo GEPA (
ExtractTracesforReflection(self, traces, component_name):- Esse método recebe
Evaluateretorna um rastreamento e extrai dele os rastreamentos associados a um componente específico (component_name) A parte relevante. - O texto extraído será fornecido ao modelo reflexivo para análise.
- Esse método recebe
Esta é uma estrutura de exemplo conceitual:
from gepa.core import GEPAAdapter
class MyCustomAdapter(GEPAAdapter):
def Evaluate(self, candidate, trainset_sample):
# 你的系统逻辑:使用candidate中的提示词处理trainset_sample中的数据
# ...
scores = [...] # 计算得分
traces = [...] # 收集详细的日志或中间步骤
return scores, traces
def ExtractTracesforReflection(self, traces, component_name):
# 从traces中提取和component_name相关的文本信息
# ...
return relevant_textual_traces
# 然后调用gepa.optimize
gepa_result = gepa.optimize(
seed_candidate={"my_prompt": "Initial prompt here..."},
adapter=MyCustomAdapter(),
trainset=my_train_data,
valset=my_val_data,
# ... 其他参数
)
Essa abordagem, embora mais complexa, oferece grande flexibilidade e permite que o GEPA seja usado para otimizar qualquer sistema baseado em texto.
cenário do aplicativo
- Otimização de palavras para tarefas de raciocínio complexas
Para tarefas complexas que exigem raciocínio em várias etapas (por exemplo, matemática, lógica e planejamento estratégico), em que uma pequena alteração na palavra-chave pode levar a uma enorme diferença nos resultados, o GEPA é capaz de analisar a cadeia de raciocínio do modelo para identificar e corrigir automaticamente as falhas lógicas, gerando instruções altamente otimizadas que orientam o modelo para uma estratégia de solução mais eficiente. - Geração e otimização de código
O GEPA não apenas gera código, mas também o otimiza com base em feedback textual, como erros de compilação, relatórios de análise de desempenho ou comentários de revisão de código. Por exemplo, ele pode pegar um trecho de código genérico e modificá-lo iterativamente em uma versão altamente otimizada com base na documentação e nas mensagens de erro para uma peça específica de hardware (por exemplo, GPU). - Ajuste do sistema RAG (Retrieval Augmented Generation)
O sistema RAG consiste em vários segmentos (reconstrução de consultas, recuperação de documentos, síntese de respostas, etc.), cada um dos quais é orientado por palavras-chave. O GEPA pode otimizar todas essas palavras-chave simultaneamente, melhorando a precisão da recuperação e a qualidade das respostas por meio da análise da trajetória de execução de todo o sistema RAG. - Ajuste fino das instruções comportamentais do corpo inteligente (agente)
Para as inteligências que precisam interagir com ferramentas ou ambientes externos, o GEPA pode otimizar suas instruções principais (ou seja, palavras-chave do sistema) analisando os registros comportamentais das inteligências (incluindo chamadas de API, resultados retornados por ferramentas e feedback de ambientes), permitindo que elas concluam suas tarefas de forma mais eficiente e confiável. - Aprendizado instrucional para conhecimento específico do domínio
Em domínios especializados (por exemplo, médico, jurídico, financeiro), os sistemas de IA precisam seguir estritamente diretrizes e especificações específicas. O GEPA pode usar esses documentos de diretrizes como base para reflexão e, quando o resultado do sistema não estiver em conformidade com as especificações, o GEPA pode incorporar automaticamente as regras relevantes às palavras-chave para tornar o resultado do sistema mais compatível.
QA
- Como o GEPA difere dos métodos tradicionais de otimização de aprendizado por reforço (RL)?
A principal diferença é a riqueza do sinal de aprendizado. Os métodos tradicionais de RL geralmente dependem de uma pontuação de recompensa única e esparsa (por exemplo, 1 ponto para o sucesso da tarefa, 0 pontos para falha), e o modelo requer um grande número de tentativas para aprender uma estratégia eficaz. O GEPA, por outro lado, utiliza um rico feedback de linguagem natural e "lê" os registros detalhados do processo de execução por meio do LLM para entender as causas exatas das falhas, permitindo que sejam feitos aprimoramentos mais precisos com menos amostras. - O uso do GEPA exige um modelo de linguagem muito avançado?
O projeto do GEPA inclui dois modelos: um "modelo de tarefa" a ser otimizado e um "modelo reflexivo" a ser analisado. Geralmente, recomenda-se usar um modelo que seja o mais capaz possível como o "modelo reflexivo" (por exemplo, GPT-4 ou superior), pois ele exige uma compreensão profunda de trajetórias e contextos de execução complexos. O "modelo de tarefa" otimizado pode ser qualquer coisa que você precise para melhorar o desempenho, inclusive modelos menores e mais econômicos. - O que significa "Pareto" no GEPA?
O termo "Pareto" é derivado do conceito de otimização de Pareto e é usado na otimização de vários objetivos. No GEPA, isso significa que o processo de otimização não visa apenas a pontuação mais alta em uma única métrica (por exemplo, precisão), mas também pode considerar outros objetivos, como o comprimento da deixa, o custo da chamada de API ou a latência da resposta, mantendo uma "fronteira de Pareto", ou seja, um conjunto de soluções candidatas que são bem equilibradas em relação a diferentes objetivos. O GEPA manterá uma "fronteira de Pareto", ou seja, um conjunto de candidatos que atinja um bom equilíbrio entre os diferentes objetivos, em vez de apenas uma única opção "melhor". - O GEPA só é capaz de otimizar palavras de prompt em inglês?
Não. O mecanismo subjacente do GEPA baseia-se na capacidade dos modelos de linguagem de entender e gerar texto, portanto, ele é naturalmente compatível com vários idiomas. Desde que você forneça dados de treinamento, métricas de avaliação e modelos de reflexão que suportem o idioma apropriado (por exemplo, chinês), o GEPA poderá ser usado para otimizar os componentes de texto para esse idioma.






























