import { AbstractTool } from './AbstractTool.js' import { ChatGPTAPI } from '../openai/chatgpt-api.js' import { Config } from '../config.js' import fetch from 'node-fetch' import proxy from 'https-proxy-agent' import { getMaxModelTokens } from '../common.js' import { ChatGPTPuppeteer } from '../browser.js' export class WebsiteTool extends AbstractTool { name = 'website' parameters = { properties: { url: { type: 'string', description: '要访问的网站网址' } }, required: ['url'] } func = async function (opts) { let { url } = opts try { // let res = await fetch(url, { // headers: { // 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' // } // }) // let text = await res.text() let origin = false if (!Config.headless) { Config.headless = true origin = true } let ppt = new ChatGPTPuppeteer() let browser = await ppt.getBrowser() let page = await browser.newPage() await page.goto(url, { waitUntil: 'networkidle2' }) let text = await page.content() await page.close() if (origin) { Config.headless = false } // text = text.replace(/)<[^<]*)*<\/style>/gi, '') // .replace(/)<[^<]*)*<\/script>/gi, '') // .replace(/)<[^<]*)*<\/head>/gi, '') // .replace(//gi, '') text = text.replace(/)<[^<]*)*<\/style>/gi, '') // 移除