File size: 3,373 Bytes
da04e19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from flask import Blueprint, request, jsonify, session
from models import UserModal
from helpers.GROQ import ConversationGROQ
from helpers.prompts import PromptManager
from helpers.Scrapy import Scrapper
import requests
llm = Blueprint('llm', __name__)
import json

prompt_manager = PromptManager()
prompt_manager.load_prompt('base_prompt', 'prompts/base_prompts.txt')
prompt_manager.load_prompt('base_chatbot_prompt', 'prompts/base_chatbot_prompts.txt')
prompt_manager.load_prompt('base_seo_prompt', 'prompts/base_seo_prompts.txt')
prompt_manager.load_prompt('base_content_prompt', 'prompts/base_content_prompts.txt')
base_prompt = prompt_manager.get_prompt('base_prompt')
base_chatbot_prompt = prompt_manager.get_prompt('base_chatbot_prompt')
base_seo_prompt = prompt_manager.get_prompt('base_seo_prompt')
base_content_prompt = prompt_manager.get_prompt('base_content_prompt')

groq = ConversationGROQ()
groq.create_conversation(base_prompt)

@llm.route('/analyze', methods=['POST'])
def analyze():
    data = request.json
    url = data['url']
    # Check user authentication
    user_id = session.get('user_id')
    if not user_id:
        return jsonify({'message': 'Unauthorized'}), 401

    user = UserModal.query.filter_by(id=user_id).first()
    if not user:
        return jsonify({'message': 'User not found'}), 404

    
    try:
        scrapper = Scrapper(url, groq)
        content = scrapper.scrape()
        content = scrapper.parse(content)
        content = scrapper.compress(content)
        content = scrapper.truncate(content)
        content = scrapper.analyze(content)
        json = scrapper.extract(content)
        return jsonify({'json': json, "descripton": content}), 200
    except requests.RequestException as e:
        return jsonify({'message': f'Error fetching URL: {str(e)}'}), 400
    except Exception as e:
        return jsonify({'message': f'Error processing HTML: {str(e)}'}), 500

@llm.route('/chat', methods=['POST'])
def chat():
    data = request.json
    message = data['message']
    prompt = """
    Analyze the user's input to determine the desired output format.
    If the user requests a specific format (e.g., JSON, Excel), format the response accordingly.
    If no specific format is mentioned, provide a normal view.

    Your task is to analyze the following user input and provide a short response:

    {message}

    If you detect a request for JSON format in the user's input, wrap your response in a JSON structure like this:
    {{"json": "<json_content_here>"}}

    For other formats (e.g., Excel), indicate the format in your response, but provide the content in a text-based representation.

    If no specific format is requested, provide a comprehensive analysis in a normal, readable format.
    Analyze the user's input to determine if they're asking for a specific piece of information or a summary/opinion.
    If they're asking for specific information, provide only that information without additional explanation.
    If they're asking for a summary or your view, provide a concise explanation.
    If they're asking for a specific format, provide the response in the requested format.
    
    Response should be simple and to the point at most it should be a simple text or a json
    
"""
    response = groq.chat(prompt.format(message=message))
    return jsonify({'response': response}), 200