Aziz Alto
Update gpt.py
94de721
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()
@staticmethod
@lru_cache
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()