Added new demo

This commit is contained in:
ShubhamSaboo 2024-08-20 20:46:47 -05:00
parent 5584624de5
commit 512a73f718
3 changed files with 106 additions and 0 deletions

52
llm_router_app/README.md Normal file
View file

@ -0,0 +1,52 @@
## 📡 RouteLLM Chat App
> Note: This project is inspired by the opensource [RouteLLM library](https://github.com/lm-sys/RouteLLM/tree/main), which provides intelligent routing between different language models.
This Streamlit application demonstrates the use of RouteLLM, a system that intelligently routes queries between different language models based on the complexity of the task. It provides a chat interface where users can interact with AI models, and the app automatically selects the most appropriate model for each query.
### Features
- Chat interface for interacting with AI models
- Automatic model selection using RouteLLM
- Utilizes both GPT-4 and Meta-Llama 3.1 models
- Displays chat history with model information
### How to get Started?
1. Clone the GitHub repository
```bash
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
```
2. Install the required dependencies:
```bash
pip install -r requirements.txt
```
3. Set up your API keys:
```bash
os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
os.environ['TOGETHERAI_API_KEY'] = "your_togetherai_api_key"
```
Note: In a production environment, it's recommended to use environment variables or a secure configuration management system instead of hardcoding API keys.
4. Run the Streamlit App
```bash
streamlit run llm_router.py
```
### How it Works?
1. RouteLLM Initialization: The app initializes the RouteLLM controller with two models:
- Strong model: GPT-4 (mini)
- Weak model: Meta-Llama 3.1 70B Instruct Turbo
2. Chat Interface: Users can input messages through a chat interface.
3. Model Selection: RouteLLM automatically selects the appropriate model based on the complexity of the user's query.
4. Response Generation: The selected model generates a response to the user's input.
5. Display: The app displays the response along with information about which model was used.
6. History: The chat history is maintained and displayed, including model information for each response.

View file

@ -0,0 +1,52 @@
import os
os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
os.environ['TOGETHERAI_API_KEY'] = "your_togetherai_api_key"
import streamlit as st
from routellm.controller import Controller
# Initialize RouteLLM client
client = Controller(
routers=["mf"],
strong_model="gpt-4o-mini",
weak_model="together_ai/meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",
)
# Set up Streamlit app
st.title("RouteLLM Chat App")
# Initialize chat history
if "messages" not in st.session_state:
st.session_state.messages = []
# Display chat messages
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
if "model" in message:
st.caption(f"Model used: {message['model']}")
# Chat input
if prompt := st.chat_input("What is your message?"):
# Add user message to chat history
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
# Get RouteLLM response
with st.chat_message("assistant"):
message_placeholder = st.empty()
response = client.chat.completions.create(
model="router-mf-0.11593",
messages=[{"role": "user", "content": prompt}]
)
message_content = response['choices'][0]['message']['content']
model_name = response['model']
# Display assistant's response
message_placeholder.markdown(message_content)
st.caption(f"Model used: {model_name}")
# Add assistant's response to chat history
st.session_state.messages.append({"role": "assistant", "content": message_content, "model": model_name})

View file

@ -0,0 +1,2 @@
streamlit
"routellm[serve,eval]"