UNPKG

@iucteam/lot-agents

Version:

Agents for lot agentic framework

76 lines 4.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Wikipedia = void 0; const tslib_1 = require("tslib"); const lot_1 = require("@iucteam/lot"); const wikipedia_1 = tslib_1.__importDefault(require("wikipedia")); const zod_1 = require("zod"); const zod_to_json_schema_1 = tslib_1.__importDefault(require("zod-to-json-schema")); const NoOpBrain_1 = require("../../brains/NoOpBrain"); const Validator_1 = require("../../decorators/Validator"); const Validators_1 = require("../../Validators"); class Wikipedia extends lot_1.Sensor { constructor(config, brain = new NoOpBrain_1.NoOpBrain()) { super(config.name, config.description, brain); } async detect(task) { const inputs = task.getTaskInputs(); const action = inputs.action; if (action === 'search') { if (inputs.query === undefined) { throw new Error('search action requires that a query is defined, unable to continue with Wikipedia tool'); } lot_1.Logger.trace('Wikipedia tool is being executed for action [%s] and query [%s]', action, inputs.query); const result = await wikipedia_1.default.search(inputs.query); const answers = []; for (let index = 0; index < result.results.length; index++) { const res = result.results[index]; const page = await wikipedia_1.default.page(res.title); const content = await page.content(); const instruction = new lot_1.Instruction(lot_1.SimpleRequirement.from(content), new lot_1.Context(), {}, this.getExpectation(), this.getDescriptor()); const thought = await this.brain.evaluate(instruction); answers.push(new lot_1.Inference(thought.getContent(), 1).addSources([page.fullurl])); } return answers; } else if (action === 'accessPage') { if (inputs.page === undefined) { throw new Error('accessPage action requires that a page is defined, unable to continue with Wikipedia tool'); } lot_1.Logger.trace('Wikipedia tool is being executed for action [%s] and page [%s]', action, inputs.page); const page = await wikipedia_1.default.page(inputs.page); const content = await page.content(); const instruction = new lot_1.Instruction(lot_1.SimpleRequirement.from(content), new lot_1.Context(), {}, this.getExpectation(), this.getDescriptor()); const thought = await this.brain.evaluate(instruction); return [new lot_1.Inference(thought.getContent(), 1).addSources([page.fullurl])]; } throw new Error(`requested to execute and unknown action ${action}`); } getSchema() { return JSON.stringify((0, zod_to_json_schema_1.default)(zod_1.z.object({ action: zod_1.z.string().describe('the action to take, valid actions are: search, accessPage. Must be provided'), query: zod_1.z.string().describe('the search query, must be provided only if the action is parameter is set to search'), page: zod_1.z.string().describe('the page to access, must be provided only if the action is parameter is set to accessPage') }))); } getAgentCapabilities() { return []; } } exports.Wikipedia = Wikipedia; tslib_1.__decorate([ (0, Validator_1.Validator)({ validator: Validators_1.definedTaskInputValidator, message: 'task inputs must be defined for Wikipedia sensor' }), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [lot_1.Task]), tslib_1.__metadata("design:returntype", Promise) ], Wikipedia.prototype, "detect", null); tslib_1.__decorate([ (0, lot_1.Cacheable)({ key: 'httpGetSchema', ttl: Infinity }), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", []), tslib_1.__metadata("design:returntype", String) ], Wikipedia.prototype, "getSchema", null); //# sourceMappingURL=Wikipedia.js.map