Mesmo fora do espaço de IA, muitos sistemas de infraestrutura tentam separar o "estado da execução" do "estado do negócio". Para aplicativos de IA, isso pode envolver abstrações complexas para acompanhar informações como a etapa atual, a próxima etapa, o status de espera, novas tentativas etc. Essa separação introduz complexidade e, embora possa valer a pena, pode ser difícil para o seu caso de uso. Essa separação introduz complexidade e, embora possa valer a pena, pode ser pequena demais para seu caso de uso.
Como sempre, você precisará decidir por si mesmo o que é certo para o seu aplicativo. Mas não presuma que vocênecessariamenteGerencie-os separadamente.
Mais claramente:
- status de execução (computação)Etapa atual, próxima etapa, status de espera, número de tentativas, etc.
- estado operacionalO que aconteceu até o momento no fluxo de trabalho do Intelligentsia (por exemplo, listas de mensagens do OpenAI, chamadas de ferramentas, listas de resultados, etc.).
Se possível, simplifique - unifique os dois o máximo possível.
Na verdade, você pode projetar seu aplicativo de modo que ele possa inferir todos os estados de execução a partir da janela de contexto. Em muitos casos, o estado de execução (etapa atual, estado de espera etc.) é apenas metadados sobre o que aconteceu até o momento.
É possível que haja alguns itens que não caibam na janela de contexto, como IDs de sessão, contextos de senha etc., mas seu objetivo deve ser minimizá-los. Ao adotar o Elemento 3Se o modelo de linguagem for mais simples, você poderá controlar o que é realmente alimentado no modelo de linguagem grande.
Há várias vantagens nessa abordagem:
- simplicidade: a única fonte verdadeira de todos os estados
- serializaçãothreads podem ser facilmente serializados/desserializados
- ajustar os componentes durante o teste: toda a história em um relance
- destrezaAdicionar um novo estado com facilidade, bastando adicionar um novo tipo de evento!
- retomadaRecupere-se de qualquer ponto simplesmente carregando o tópico!
- estrelado: os threads podem ser bifurcados a qualquer momento, copiando um subconjunto de threads para um novo ID de contexto/estado
- Interface homem-computador e observabilidadeConverta facilmente threads em Markdown legível por humanos ou em interfaces de usuário avançadas de aplicativos da Web!