AIN-Arabic-VLM / app.py
ahmedheakl's picture
Upload folder using huggingface_hub
34a1cb8 verified
from openai import OpenAI
from flask import Flask, request
import requests
from loguru import logger
app = Flask(__name__)
BOT_TOKEN = "8003439194:AAGQNjq3dQSZi4Ztv2Z0yyZx1ZnD0L5MR5o"
TELEGRAM_API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}"
client = OpenAI(
api_key="0",
base_url="https://0f21-5-195-0-150.ngrok-free.app/v1",
)
@app.route("/test")
def test():
return "Hello, World!"
DEFAULT_CAPTION = "Please provide a caption for the image."
@app.route(f"/{BOT_TOKEN}", methods=["POST"])
def telegram_webhook():
data = request.json
chat_id = data["message"]["chat"]["id"]
messages: list[dict] = [{
"role": "user",
"content": []
}]
logger.debug(f"Received message: {data}")
if "text" in data["message"]:
user_message = data["message"]["text"]
messages[0]['content'].append({"type": "text", "text": user_message})
if "photo" in data["message"]:
file_id = data["message"]["photo"][-1]["file_id"]
file_info = requests.get(f"{TELEGRAM_API_URL}/getFile?file_id={file_id}").json()
file_path = file_info["result"]["file_path"]
image_url = f"https://api.telegram.org/file/bot{BOT_TOKEN}/{file_path}"
messages[0]['content'].append({
"type": "image_url",
"image_url": {"url": image_url},
})
if "caption" in data["message"]:
messages[0]['content'].append({"type": "text", "text": data["message"]["caption"]})
else:
messages[0]['content'].append({"type": "text", "text": DEFAULT_CAPTION})
if "text" not in data['message'] and "photo" not in data['message']:
send_message(chat_id, "Unsupported message type. Please send text or an image.")
return "ok", 200
try:
logger.debug(f"Sending message to OpenAI: {messages}")
result = client.chat.completions.create(messages=messages, model="test")
response_text = result.choices[0].message.content
except Exception as e:
logger.error(f"Error processing message: {e}")
response_text = "There was an error processing your request."
send_message(chat_id, response_text)
return "ok", 200
def send_message(chat_id, text):
url = f"{TELEGRAM_API_URL}/sendMessage"
payload = {"chat_id": chat_id, "text": text}
requests.post(url, json=payload)
if __name__ == "__main__":
app.run(port=5000)