81 lines
2.6 KiB
TypeScript
81 lines
2.6 KiB
TypeScript
import { z } from '@bpinternal/zui'
|
|
import { Tool } from 'llmz'
|
|
import type { SubAgent } from './orchestrator'
|
|
|
|
const resetPassword = new Tool({
|
|
name: 'resetPassword',
|
|
description: "Reset a user's password",
|
|
input: z.object({
|
|
userId: z.string().describe('User ID'),
|
|
newPassword: z.string().describe('New password for the user'),
|
|
}),
|
|
output: z.object({
|
|
success: z.boolean().describe('Whether the password was reset successfully'),
|
|
message: z.string().describe('Confirmation message'),
|
|
}),
|
|
async handler({ userId }) {
|
|
// Simulate resetting a password
|
|
console.log(`Resetting password for user ${userId}`)
|
|
return {
|
|
success: true,
|
|
message: `Password for user ${userId} has been reset successfully.`,
|
|
}
|
|
},
|
|
})
|
|
|
|
const getITPolicies = new Tool({
|
|
name: 'getITPolicies',
|
|
description: 'Get information about IT policies',
|
|
output: z.object({
|
|
policies: z.array(z.string()).describe('List of IT policies'),
|
|
}),
|
|
async handler() {
|
|
// Simulate fetching IT policies
|
|
console.log('Fetching IT policies')
|
|
return {
|
|
policies: [
|
|
'Password complexity requirements',
|
|
'Data encryption standards',
|
|
'Incident response procedures',
|
|
'Acceptable use policy',
|
|
'Software installation guidelines',
|
|
],
|
|
}
|
|
},
|
|
})
|
|
|
|
const getTechnicalSupport = new Tool({
|
|
name: 'reportTechnicalIssue',
|
|
description: 'Report a technical issue',
|
|
input: z.object({
|
|
issueDescription: z.string().describe('Description of the technical issue'),
|
|
}),
|
|
output: z.object({
|
|
success: z.boolean().describe('Whether the issue was reported successfully'),
|
|
ticketId: z.string().describe('Ticket ID for the reported issue'),
|
|
}),
|
|
async handler({ issueDescription }) {
|
|
// Simulate reporting a technical issue
|
|
console.log(`Reporting technical issue: ${issueDescription}`)
|
|
return {
|
|
success: true,
|
|
ticketId: `TICKET-${Math.floor(Math.random() * 10000)}`,
|
|
}
|
|
},
|
|
})
|
|
|
|
export const ITAgent: SubAgent = {
|
|
name: 'it',
|
|
description: 'Agent specialized in IT-related inquiries.',
|
|
positive_examples: [
|
|
'How do I reset my password?',
|
|
'Can you help me with a technical issue?',
|
|
"What are the company's IT security policies?",
|
|
],
|
|
instructions: `You are an IT agent that handles IT-related inquiries.
|
|
You respond with specific information about IT policies, procedures, and technical support.
|
|
You provide clear and concise answers to IT-related questions.
|
|
When a user reports a technical issue, you log the issue and provide a ticket ID for tracking.`,
|
|
tools: [resetPassword, getITPolicies, getTechnicalSupport],
|
|
}
|