| import streamlit as st |
| import time |
| import requests |
| import json |
| import os |
| from dotenv import load_dotenv |
| load_dotenv() |
|
|
| st.set_page_config(layout="centered") |
|
|
| st.title("DaniGPT 🤖") |
| st.write("Preguntame cualquier cosa sobre python, Judini o Langchain") |
| st.write("OJO 👀 No estoy conectado a internet, así que puedo alucinar 😵💫, es tu trabajo corroborar que la respuesta que te entregue sea correcta.") |
| st.markdown('---') |
| |
| 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_input("En que te puedo ayudar?"): |
| |
| st.session_state.messages.append({"role": "user", "content": prompt}) |
| |
| with st.chat_message("user"): |
| st.markdown(prompt) |
|
|
| |
| with st.chat_message("assistant"): |
| message_placeholder = st.empty() |
| full_response = "" |
| |
| api_key= os.getenv("CODEGPT_API_KEY") |
| agent_id= os.getenv("CODEGPT_AGENT_ID") |
| url = 'https://playground.judini.ai/api/v1/agent/'+agent_id |
| headers = {"Content-Type": "application/json; charset=utf-8", "Authorization": "Bearer "+api_key} |
| data = { |
| "messages": [ |
| { |
| "role": "user", |
| "content": prompt |
| } |
| ] |
| } |
| response = requests.post(url, headers=headers, json=data, stream=True) |
| raw_data = '' |
| tokens = '' |
| for chunk in response.iter_content(chunk_size=1024): |
| if chunk: |
| raw_data = chunk.decode('utf-8').replace("data: ", '') |
| if raw_data != "": |
| lines = raw_data.strip().splitlines() |
| for line in lines: |
| line = line.strip() |
| if line and line != "[DONE]": |
| try: |
| json_object = json.loads(line) |
| result = json_object['data'] |
| full_response += result |
| time.sleep(0.05) |
| |
| message_placeholder.markdown(full_response + "▌") |
| except json.JSONDecodeError: |
| print(f'Error al decodificar el objeto JSON en la línea: {line}') |
| message_placeholder.markdown(full_response) |
| st.session_state.messages.append({"role": "assistant", "content": full_response}) |