File size: 4,190 Bytes
792e40c
 
 
 
 
 
a4e8282
db80347
792e40c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fca2084
 
792e40c
 
 
373aa66
 
 
792e40c
 
 
 
 
 
 
 
 
 
 
 
db80347
792e40c
 
 
 
 
 
 
fca2084
373aa66
5fd0079
373aa66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fca2084
 
 
 
 
373aa66
fca2084
 
 
 
373aa66
 
 
 
 
 
 
 
 
792e40c
fca2084
 
 
 
 
 
 
5c0e929
fca2084
 
 
792e40c
 
 
 
 
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import streamlit as st
import requests
from dotenv import load_dotenv
import time
from helper.upload_File import uploadFile
import json

import requests

class TargetMarketAnalyst:
    def __init__(self, model_url, analyst_name, data_src, analyst_description):
        self.model_url = model_url
        self.analyst_name = analyst_name
        self.data_src = data_src
        self.analyst_description = analyst_description
        self.initialize()
        self.row1()

    def initialize(self):
        # FOR ENV
        load_dotenv()

        # AGENT NAME
        st.header(self.analyst_name)

        # EVALUATION FORM LINK
        #url = os.getenv('Link')
        #st.write('Evaluation Form: [Link](%s)' % url)  
    
    def request_model(self, payload_txt):
        response = requests.post(self.model_url, json=payload_txt)
        response.raise_for_status()
        output = response.json()

        sources = self.newsapi.get_sources()
        response.raise_for_status()
        output = response.json()

        text = output["outputs"][0]["outputs"][0]["results"]["text"]["data"]["text"]
        text = json.loads(text)
        text = text[0]

        target_market = text["target_market"]
        demographics = text["demographics"]
        summary = text["summary"]
        
        with st.expander("News Available", expanded=True, icon="🤖"):
            st.write(f"**Target Market**:\n {target_market}\n")
            st.write(f"\n**Product / Service Demographics**: {demographics}")
            st.write(f"\n**Marketing Message Summary**: {summary}")
        
        return output
 
    def row1(self):
        
            prompt = st.chat_input("How can I help you today?")

            #client = genai.Client(api_key="AIzaSyArNeCctdKaWhxprHTnHyISCd0CpKqB5dk")
            
            payload_txt = {
                "input_value": f"{prompt}",
                "output_type": "chat", 
                "input_type": "chat",
                "tweaks": {
                    "Agent-jDo0M": {},
                    "ChatInput-TcV5B": {},
                    "ChatOutput-woYKj": {},
                    "URL-iTqUH": {},
                    "CalculatorComponent-yPwgW": {},
                    "APIRequest-rDfwC": {},
                    "TextInput-sID7m": {},
                    "ParseData-ezi1L": {}
                }
            }

            headers = {
                'Content-Type': 'application/json',
            }
         
            url = "http://172.17.21.23:7860/api/v1/run/382ac239-3231-4f9b-89fe-f5ee26e4b1eb?stream=false"

            if "messages" not in st.session_state:
                st.session_state.messages = []
            for message in st.session_state.messages:
                with st.chat_message(message["role"]):
                    st.markdown(message["content"])
            if prompt:
                st.chat_message("user").markdown(prompt)
                # Add user message to chat history
                st.session_state.messages.append({"role": "user", "content": prompt})
               
                response = requests.post(url, json=payload_txt, headers=headers, params={'stream': 'false'})
                response.raise_for_status()
                output = response.json()
                text = output["outputs"][0]["outputs"][0]["results"]["message"]["text"]

                def remove_escape_sequences(text):
                    return text.replace('\\n', '\n').replace('\\t', '\t').replace('\\r', '\r')

                self.text = remove_escape_sequences(json.dumps(text, ensure_ascii=False).strip('"'))

                response = f"Echo: {self.text}"
                with st.chat_message("assistant"):
                    response = st.write_stream(self.stream_string(self.text))
                    
                # Add assistant response to chat history
                st.session_state.messages.append({"role": "assistant", "content": response})
    
    def stream_string(self, text, delay=0.003):
        for char in text:
            yield char
            time.sleep(delay)  # Small delay to simulate typing

if __name__ == "__main__":
    st.set_page_config(layout="wide")

upload = uploadFile()