Spaces:
Build error
Build error
File size: 2,510 Bytes
d7590e5 89a66cd d7590e5 4594618 89a66cd 48243c1 4594618 48243c1 d7590e5 48243c1 d7590e5 89a66cd 48243c1 d7590e5 89a66cd 48243c1 89a66cd d7590e5 48243c1 d7590e5 48243c1 4594618 48243c1 4594618 48243c1 d7590e5 48243c1 d7590e5 4594618 d7590e5 48243c1 d7590e5 | 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 | import logging
from typing import Final, List, Union
import gradio as gr
from gradio import ChatMessage
from agent import BasicAgent
MAX_INPUT_CHARS: Final[int] = 4000
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
agent = BasicAgent()
def submit(user_message: str, history: List[Union[ChatMessage, dict]]):
history = history or []
logger.info(f"User Message: {user_message}")
if not user_message:
return history + [
ChatMessage(role="user", content=user_message),
ChatMessage(role="assistant", content="Input too short."),
], ""
if len(user_message) > MAX_INPUT_CHARS:
return history + [
ChatMessage(role="user", content=user_message),
ChatMessage(
role="assistant",
content=f"Input too long; please shorten to under {MAX_INPUT_CHARS} characters.",
),
], ""
# Add user message to history
history = history + [ChatMessage(role="user", content=user_message)]
# Build prompt from last messages
last_n = 6
prompt_parts = []
for msg in history[-last_n:]:
# Handle both ChatMessage objects and dicts
if isinstance(msg, dict):
role = msg.get("role", "user")
content = msg.get("content", "")
else:
role = msg.role
content = msg.content
prefix = "User:" if role == "user" else "Assistant:"
prompt_parts.append(f"{prefix} {content}")
prompt = "\n".join(prompt_parts) + "\nAssistant:"
try:
answer = agent(prompt)
logger.info(f"Agent Response: {answer}")
except Exception as e:
logger.error(f"Agent error: {e}")
answer = "Sorry, I encountered an error. Please try again."
# Add agent response to history
history = history + [ChatMessage(role="assistant", content=str(answer))]
logger.info(f"Updated history: {history}")
return history, ""
with gr.Blocks(title="BasicAgent Chat") as demo:
chatbot = gr.Chatbot()
message = gr.Textbox()
clear_btn = gr.ClearButton([message, chatbot])
submit_btn = gr.Button("Send")
message.submit(
submit,
inputs=[message, chatbot],
outputs=[chatbot, message],
)
submit_btn.click(submit, inputs=[message, chatbot], outputs=[chatbot, message])
clear_btn.click(lambda: [], None, chatbot)
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860)
|