awesome-llm-apps/advanced_tools_frameworks/multillm_chat_playground/multillm_playground.py
2024-11-04 20:59:39 -06:00

84 lines
3.2 KiB
Python

import streamlit as st
from litellm import completion
# Set up the Streamlit app
st.title("Multi-LLM Chat Playground")
# Get API keys from the user
openai_api_key = st.text_input("Enter your OpenAI API Key:", type="password")
anthropic_api_key = st.text_input("Enter your Anthropic API Key:", type="password")
cohere_api_key = st.text_input("Enter your Cohere API Key:", type="password")
# Check if all API keys are provided
if openai_api_key and anthropic_api_key and cohere_api_key:
# Create a text input for user messages
user_input = st.text_input("Enter your message:")
if st.button("Send to All LLMs"):
if user_input:
messages = [{"role": "user", "content": user_input}]
# Create three columns for side-by-side display
col1, col2, col3 = st.columns(3)
# GPT-4o response
with col1:
st.subheader("GPT-4o")
try:
gpt_response = completion(model="gpt-4o", messages=messages, api_key=openai_api_key)
st.write(gpt_response.choices[0].message.content)
except Exception as e:
st.error(f"Error with GPT-4o: {str(e)}")
# Claude-3-sonnet response
with col2:
st.subheader("Claude 3.5 Sonnet")
try:
claude_response = completion(model="claude-3-5-sonnet-20240620", messages=messages, api_key=anthropic_api_key)
st.write(claude_response.choices[0].message.content)
except Exception as e:
st.error(f"Error with Claude 3.5 Sonnet: {str(e)}")
# Cohere response
with col3:
st.subheader("Cohere")
try:
cohere_response = completion(model="command-r-plus", messages=messages, api_key=cohere_api_key)
st.write(cohere_response.choices[0].message.content)
except Exception as e:
st.error(f"Error with Cohere: {str(e)}")
# Compare responses
st.subheader("Response Comparison")
st.write("You can see how the three models responded differently to the same input.")
st.write("This demonstrates the ability to use multiple LLMs in a single application.")
else:
st.warning("Please enter a message.")
else:
st.warning("Please enter all API keys to use the chat.")
# Add some information about the app
st.sidebar.title("About this app")
st.sidebar.write(
"This app demonstrates the use of multiple Language Models (LLMs) "
"in a single application using the LiteLLM library."
)
st.sidebar.subheader("Key features:")
st.sidebar.markdown(
"""
- Utilizes three different LLMs:
- OpenAI's GPT-4o
- Anthropic's Claude 3.5 Sonnet
- Cohere's Command R Plus
- Sends the same user input to all models
- Displays responses side-by-side for easy comparison
- Showcases the ability to use multiple LLMs in one application
"""
)
st.sidebar.write(
"Try it out to see how different AI models respond to the same prompt!"
)