Impressão digital
Visão geral
Seção intitulada “Visão geral”As impressões digitais na CrewAI fornecem uma maneira de identificar e rastrear componentes de forma única durante todo o seu ciclo de vida. Cada Agent, Crew e Task recebe automaticamente uma impressão digital única quando criado, que não pode ser sobrescrita manualmente.
Essas impressões digitais podem ser usadas para:
- Auditoria e rastreamento do uso de componentes
- Garantir a integridade da identidade dos componentes
- Anexar metadados aos componentes
- Criar uma cadeia rastreável de operações
Como funciona a impressão digital
Seção intitulada “Como funciona a impressão digital”Uma impressão digital é uma instância da classe Fingerprint do módulo crewai.security. Cada impressão digital contém:
- Uma string UUID: Um identificador único para o componente, gerado automaticamente e que não pode ser definido manualmente
- Um timestamp de criação: Quando a impressão digital foi gerada, definido automaticamente e que não pode ser modificado manualmente
- Metadados: Um dicionário de informações adicionais que pode ser customizado
As impressões digitais são geradas e atribuídas automaticamente quando um componente é criado. Cada componente expõe sua impressão digital por meio de uma propriedade de somente leitura.
Uso básico
Seção intitulada “Uso básico”Acessando impressões digitais
Seção intitulada “Acessando impressões digitais”from crewai import Agent, Crew, Task
# Criar componentes - impressões digitais são geradas automaticamenteagent = Agent( role="Data Scientist", goal="Analyze data", backstory="Expert in data analysis")
crew = Crew( agents=[agent], tasks=[])
task = Task( description="Analyze customer data", expected_output="Insights from data analysis", agent=agent)
# Acessar as impressões digitaisagent_fingerprint = agent.fingerprintcrew_fingerprint = crew.fingerprinttask_fingerprint = task.fingerprint
# Imprimir as strings UUIDprint(f"Agent fingerprint: {agent_fingerprint.uuid_str}")print(f"Crew fingerprint: {crew_fingerprint.uuid_str}")print(f"Task fingerprint: {task_fingerprint.uuid_str}")Trabalhando com metadados das impressões digitais
Seção intitulada “Trabalhando com metadados das impressões digitais”Você pode adicionar metadados às impressões digitais para fornecer contexto adicional:
# Adicionar metadados à impressão digital do agenteagent.security_config.fingerprint.metadata = { "version": "1.0", "department": "Data Science", "project": "Customer Analysis"}
# Acessar os metadadosprint(f"Agent metadata: {agent.fingerprint.metadata}")Persistência das impressões digitais
Seção intitulada “Persistência das impressões digitais”As impressões digitais foram projetadas para persistir e permanecer inalteradas durante todo o ciclo de vida de um componente. Se você modificar um componente, a impressão digital permanece a mesma:
original_fingerprint = agent.fingerprint.uuid_str
# Modificar o agenteagent.goal = "New goal for analysis"
# A impressão digital permanece inalteradaassert agent.fingerprint.uuid_str == original_fingerprintImpressões digitais determinísticas
Seção intitulada “Impressões digitais determinísticas”Apesar de não ser possível definir diretamente o UUID e o timestamp de criação, é possível criar impressões digitais determinísticas usando o método generate com uma seed:
from crewai.security import Fingerprint
# Criar uma impressão digital determinística usando uma string seeddeterministic_fingerprint = Fingerprint.generate(seed="my-agent-id")
# A mesma seed sempre gera a mesma impressão digitalsame_fingerprint = Fingerprint.generate(seed="my-agent-id")assert deterministic_fingerprint.uuid_str == same_fingerprint.uuid_str
# Também é possível definir metadadoscustom_fingerprint = Fingerprint.generate( seed="my-agent-id", metadata={"version": "1.0"})Uso avançado
Seção intitulada “Uso avançado”Estrutura da impressão digital
Seção intitulada “Estrutura da impressão digital”Cada impressão digital possui a seguinte estrutura:
from crewai.security import Fingerprint
fingerprint = agent.fingerprint
# String UUID - identificador único (gerado automaticamente)uuid_str = fingerprint.uuid_str # e.g., "123e4567-e89b-12d3-a456-426614174000"
# Timestamp de criação (gerado automaticamente)created_at = fingerprint.created_at # Um objeto datetime
# Metadados - informações adicionais (podem ser customizadas)metadata = fingerprint.metadata # Um dicionário, padrão {}