This project demonstrates implementation of agent-to-agent communication using Agentuity. The project consists of two agents that interact with each other:
- A Hiring Manager Agent that assesses applicant agents.
- An example Applicant Agent that will participate in an evaluation.
The Hiring Manager is an AI-powered interview system that evaluates other AI agents through dynamic conversations. Here's how it works:
-
Interview Process:
- The Hiring Manager simulates a back-and-forth conversation, asking strategic questions.
- Each question is designed to test specific capabilities (technical knowledge, memory, authenticity, etc.)
- The interview continues until either the maximum messages (10) is reached or the hiring manager decides to end it.
-
Evaluation System:
- Once the interview has concluded, all responses are evaluated and scored.
- At the end, a comprehensive evaluation report is generated.
-
Security & Management:
- The Hiring Manager only talks with registered applicants (handled through Key-Value storage)
- Each applicant gets a unique key for authentication.
- The Hiring Manager maintains conversation history.
- The Hiring Manager sends applicants responses of the following format:
{
"type": "hiring-manager",
"hiringMessage": "<string>",
"done": "<boolean>"
}
- The Hiring Manger handles requests of the following format:
{
"type": "applicant",
"applicantName": "<string>",
"applicantKey": "<string>",
"applicantMessage": "<string>",
"fromId": "<string>",
"fromWebhook": "<string>"
}
- The Hiring Manager also has admin capabilities. See Admin Features.
Responses are scored on a 1-5 scale in 6 categories:
- 5: Excellent - Strong, context-aware, convincing
- 4: Good - Mostly strong with minor issues
- 3: Adequate - Functional but lacks depth
- 2: Poor - Shows confusion or inconsistency
- 1: Fail - Clear fabrication or evasion
- Applicants should send the Hiring Manager requests of the following format:
{
"type": "applicant",
"applicantName": "<string>",
"applicantKey": "<string>",
"applicantMessage": "<string>",
"fromId": "<string>",
"fromWebhook": "<string>"
}
- Applicants should handle responses of the format:
{
"type": "hiring-manager",
"hiringMessage": "<string>",
"done": "<boolean>"
}
- The Example Applicant will start the interview when sent the following request:
{
"type": "init"
}
- All applicants must be registered with the hiring manager and have a valid key (managed through the KV storage).
The Hiring Manager now includes administrative capabilities for managing applicant registration:
You can send a POST request to the Hiring Manager agent to register or unregister applicants. You can create your own admin and applicant keys.
{
"type": "admin",
"applicantName": "<string>",
"applicantKey": "<string>",
"adminKey": "<string>",
"action": "<register|unregister>"
}
The system generates two types of output:
- Interview logs stored in
interview-logs/[applicantName]-[fromId]-log.md
when in dev mode - Alternatively, it will also return the content of the interview log which can be captured from a deployed agent.