RCMchat / app.py
mwells's picture
Upload app.py
0cee625 verified
import streamlit as st
import os
import urllib.request
import json
import ssl
from menu import menu
menu()
# Retrieve Answer through API -----------------------------------------------
def chat_api(history, question):
data = {'chat_history': history,"question": question}
body = str.encode(json.dumps(data))
url = st.secrets["url"]
api_key = st.secrets["ms_api_key"]
print(url)
print(api_key)
# Replace this with the primary/secondary key, AMLToken, or Microsoft Entra ID token for the endpoint
if not api_key:
raise Exception("A key should be provided to invoke the endpoint")
headers = {'Content-Type':'application/json', 'Accept': 'application/json', 'Authorization':('Bearer '+ api_key)}
print(headers)
print(body)
req = urllib.request.Request(url, body, headers)
response = urllib.request.urlopen(req)
result = response.read()
answer = json.loads(result)["answer"]
return(answer)
# Header UI ------------------------------------------------------------------
# st.image('./Cognizant_Logo.jpg', width=300)
st.header("RCM Copilot", divider = 'blue')
# Chat UI --------------------------------------------------------------------
st.write("This chat as access to search the web to answer your quesitons.")
st.write("Model: gpt-4o-mini")
st.write("Version: V0.1")
st.header("", divider = 'blue')
# Initialize chat history
if "messages" not in st.session_state:
st.session_state.messages = []
# Display chat messages from history on app rerun
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
# Accept user input
if prompt := st.chat_input("What is your question?"):
# Add user message to chat history
st.session_state.messages.append({"role": "user", "content": prompt})
# Display user message in chat message container
with st.chat_message("user"):
st.markdown(prompt)
# Display assistant response in chat message container
with st.chat_message("assistant"):
message_placeholder = st.empty()
full_response = ""
with st.status("Getting the answer...") as status:
#assistant_response = get_completion(prompt, ft_model)
chat_history = st.session_state.messages
print(chat_history)
assistant_response = chat_api(history = chat_history, question = prompt)
full_response = assistant_response
status.update(label="Done.", state = "complete")
message_placeholder.markdown(full_response)
# Add assistant response to chat history
st.session_state.messages.append({"role": "assistant", "content": full_response})