Spaces:
Sleeping
Sleeping
import os | |
from functools import lru_cache | |
import streamlit as st | |
import anthropic | |
import openai | |
# st.set_page_config(layout="wide") | |
class AnthropicSerivce: | |
def __init__(self): | |
if "ANTHROPIC_API_KEY" not in os.environ: | |
os.environ["ANTHROPIC_API_KEY"] = st.text_input("Anthropic API Key", type="password") | |
self.client = self.anthropic_client() | |
def anthropic_client(): | |
return anthropic.Client(os.environ["ANTHROPIC_API_KEY"]) | |
def prompt(self, prompt, max_tokens_to_sample: int = 2000): | |
response = self.client.completion_stream( | |
prompt=f"{anthropic.HUMAN_PROMPT} {prompt}{anthropic.AI_PROMPT}", | |
stop_sequences=[anthropic.HUMAN_PROMPT], | |
max_tokens_to_sample=max_tokens_to_sample, | |
model="claude-v1", | |
stream=True, | |
) | |
return response | |
class OpenAIService: | |
def __init__(self): | |
openai.api_key = os.environ["OPENAI_API_KEY"] | |
def list_models(self): | |
return openai.Model.list() | |
def prompt(self, prompt): | |
# return openai.Completion.create(model="ada", prompt=prompt) | |
return openai.ChatCompletion.create( | |
model="gpt-3.5-turbo", messages=[{"role": "user", "content": prompt}] | |
# model="gpt-4", messages=[{"role": "user", "content": prompt}] | |
) | |
def app(): | |
prompt = st.text_area("Prompt", value="How many toes do dogs have?", height=100) | |
tabs = st.tabs(["Anthropic", "OpenAI"]) | |
if prompt: | |
# -- Antrhopic | |
with tabs[0]: | |
anthropic_service = AnthropicSerivce() | |
response = anthropic_service.prompt(prompt=prompt) | |
# for data in response: | |
# col = st.columns(2) | |
# with col[0]: | |
# st.markdown("---") | |
# st.write(data) | |
# with col[1]: | |
# st.markdown("---") | |
# st.markdown(data["completion"]) | |
# -- pick the last response | |
col = st.columns(2) | |
answer = list(response)[-1] | |
with col[0]: | |
st.write(answer) | |
with col[1]: | |
st.code(answer["completion"]) | |
# -- OpenAI | |
with tabs[1]: | |
openai_service = OpenAIService() | |
response = openai_service.prompt(prompt=prompt) | |
col = st.columns(2) | |
# st.write(openai_service.list_models()) | |
with col[0]: | |
st.write(response) | |
st.markdown("---") | |
with col[1]: | |
answer = response.choices[0]["message"]["content"] | |
st.code(answer, language="python") | |
st.markdown("---") | |
if __name__ == "__main__": | |
app() | |