From 9435650d4fe6c20361ffd7934782126ecefc6ea6 Mon Sep 17 00:00:00 2001 From: Dobromir Popov Date: Tue, 19 Dec 2023 20:21:34 +0200 Subject: [PATCH] installed telegram deps --- Dockerfile | 3 +- agent-py-bot/agent.py | 79 +++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +- 3 files changed, 83 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9fb6a29..022f909 100644 --- a/Dockerfile +++ b/Dockerfile @@ -75,4 +75,5 @@ EXPOSE 8080 8081 # CMD ["npm", "start"] -CMD ["npm", "run", "start:demo"] \ No newline at end of file +# CMD ["npm", "run", "start:demo"] +CMD ["npm", "run", "start:tele"] \ No newline at end of file diff --git a/agent-py-bot/agent.py b/agent-py-bot/agent.py index e69de29..bf68f8e 100644 --- a/agent-py-bot/agent.py +++ b/agent-py-bot/agent.py @@ -0,0 +1,79 @@ +import logging +from telegram.ext import Updater, CommandHandler, MessageHandler, Filters +import requests +import json +import base64 +from selenium import webdriver +from selenium.webdriver.chrome.options import Options +from io import BytesIO +from PIL import Image + +# Set up logging +logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) +logger = logging.getLogger(__name__) + +# Telegram Bot Token +TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN_HERE' + +# LLM API Endpoint +LLM_ENDPOINT = "http://localhost:11434/api/chat" + +# Selenium WebDriver setup for screenshots +chrome_options = Options() +chrome_options.add_argument("--headless") +driver = webdriver.Chrome(options=chrome_options) + +def start(update, context): + """Send a message when the command /start is issued.""" + update.message.reply_text('Hi! Send me a message, and I will interact with LLM.') + +def echo(update, context): + """Echo the user message.""" + user_message = update.message.text + response = query_llm(user_message) + update.message.reply_text(response) + +def query_llm(user_message): + """Query the LLM with the user's message.""" + data = { + "model": "llama2", + "messages": [{"role": "user", "content": user_message}] + } + response = requests.post(LLM_ENDPOINT, json=data) + if response.status_code == 200: + response_data = response.json() + return response_data.get('message', {}).get('content', 'No response') + else: + return "Error: Unable to reach LLM" + +def screenshot(update, context): + """Take a screenshot of a webpage.""" + url = ' '.join(context.args) + driver.get(url) + screenshot = driver.get_screenshot_as_png() + image_stream = BytesIO(screenshot) + image_stream.seek(0) + image = Image.open(image_stream) + image_stream.close() + image.save('screenshot.png') + update.message.reply_photo(photo=open('screenshot.png', 'rb')) + +def error(update, context): + """Log Errors caused by Updates.""" + logger.warning(f'Update "{update}" caused error "{context.error}"') + +def main(): + """Start the bot.""" + updater = Updater(TOKEN, use_context=True) + + dp = updater.dispatcher + dp.add_handler(CommandHandler("start", start)) + dp.add_handler(MessageHandler(Filters.text, echo)) + dp.add_handler(CommandHandler("screenshot", screenshot, pass_args=True)) + dp.add_error_handler(error) + + updater.start_polling() + updater.idle() + +if __name__ == '__main__': + main() diff --git a/package.json b/package.json index 3a1e010..e86a2c5 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "main": "web/server.js", "scripts": { "start": "node web/server.js", - "start:demo": "NODE_ENV=demo node web/server.js" + "start:demo": "NODE_ENV=demo node web/server.js", + "start:tele": "python agent-py-bot/agent.py" }, "dependencies": { "body-parser": "^1.20.2",