File size: 8,409 Bytes
792e40c db80347 373aa66 792e40c db80347 792e40c 373aa66 792e40c db80347 792e40c 373aa66 db80347 373aa66 792e40c 373aa66 792e40c 373aa66 792e40c db80347 792e40c db80347 2ec2977 db80347 792e40c 373aa66 db80347 792e40c db80347 792e40c db80347 792e40c db80347 792e40c db80347 792e40c 373aa66 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 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 | import streamlit as st
import requests
from dotenv import load_dotenv
import os
import time
from helper.telemetry import collect_telemetry
from helper.upload_File import uploadFile
from helper.button_behaviour import hide_button
from helper.initialize_analyze_session import initialize_analyze_session
import json
from newsapi import NewsApiClient
import requests
from google import genai
from openai import OpenAI
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):
col1, col2 = st.columns(gap="medium", spec=[0.33, 0.66])
with col1:
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 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('"'))
'''
self.topics = st.text_input("Topic of Interest: ", placeholder='Enter Topic of Interest:', key='topic')
#self.start_date = st.date_input('Start Date:', value="today", key='start_date')
#self.end_date = st.date_input('End Date:', value="today", key='end_date')
self.sort = st.radio(
"Sort by:",
["Published At", "Popularity", "Relevancy"],
captions=[
"Newest articles come first",
"Articles from popular sources and publishers come first",
"Articles more closely related to topic come first",
],
)
if self.sort == 'Relevancy':
self.sort = 'relevancy'
elif self.sort == 'Popularity':
self.sort = 'popularity'
elif self.sort == 'Published At':
self.sort = 'publishedAt'
'''
with col2:
#st.write("") # FOR THE HIDE BUTTON
#st.write("") # FOR THE HIDE BUTTON
st.write("Content: ")
#st.session_state['analyzing'] = False
#st.write("") # FOR THE HIDE BUTTON
if prompt:
st.write(self.text)
#analyze_button = st.button("", disabled=initialize_analyze_session())
start_time = time.time()
'''
if analyze_button:
hide_button()
if self.topics:
combined_text = ""
with st.spinner('Analyzing...', show_time=True):
st.write('')
# INITIALIZING SESSIONS
combined_text += f"Topic/s of Interest: {self.topics}\n"
# OUTPUT FOR SEO ANALYST
root = 'https://newsapi.org/v2/everything?'
language = "en"
api = os.getenv('apiKey')
response = requests.get(f'{root}q={self.topics}&language={language}&sortBy={self.sort}&language="en"&apiKey={api}')
try:
response.raise_for_status()
output = response.json()
with st.expander("Output", expanded=True):
text = output['articles']
for article in text:
source = article['source']['name']
published = article['publishedAt']
author = article['author']
title = article['title']
description = article['description']
url = article['url']
urlImage = article['urlToImage']
content = article['content']
left_co, cent_co,last_co = st.columns(3)
if urlImage:
with left_co:
st.image(urlImage, width=400)
st.write(f"**{title}**")
st.write(f"{description}")
st.write(f"**Author**: {author}")
st.write(f"**Source**: {source}")
st.write('Link: [URL](%s)' % url)
st.write(f"**Published At**: {published}")
st.write("---")
st.write(article)
end_time = time.time()
time_lapsed = end_time - start_time
debug_info = {
'analyst': self.analyst_name,
'time_lapsed': time_lapsed,
}
collect_telemetry(debug_info)
with st.expander("Debug information", icon="⚙"):
st.write(debug_info)
st.session_state['analyzing'] = False
except requests.exceptions.HTTPError:
st.info("Exceeded limit, please come back tomorrow")
else:
st.info("Please provide a topic of interest")
hide_button()
'''
if __name__ == "__main__":
st.set_page_config(layout="wide")
upload = uploadFile()
|