Spestly commited on
Commit
622f160
·
verified ·
1 Parent(s): 45963cd

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -23
app.py CHANGED
@@ -25,15 +25,9 @@ with st.sidebar:
25
  api_key = st.text_input("Cohere API Key", type="password")
26
  selected_model = st.selectbox("Model", options=list(model_info.keys()))
27
  if selected_model.startswith("c4ai-aya-vision"):
28
- uploaded = st.file_uploader("Upload image", type=["png","jpg","jpeg"])
29
- if uploaded:
30
- data = uploaded.read()
31
- session_image = base64.b64encode(data).decode('utf-8')
32
- st.session_state.image_data = session_image
33
  if st.button("Clear Chat"):
34
- st.session_state.messages = []
35
- st.session_state.first_message_sent = False
36
- st.session_state.image_data = None
37
  st.rerun()
38
  st.divider()
39
  st.subheader(selected_model)
@@ -46,38 +40,51 @@ if "messages" not in st.session_state:
46
  st.session_state.messages = []
47
  if "first_message_sent" not in st.session_state:
48
  st.session_state.first_message_sent = False
49
- if "image_data" not in st.session_state:
50
- st.session_state.image_data = None
51
 
52
  if not st.session_state.first_message_sent:
53
  st.markdown("<h1 style='text-align: center; color: #4a4a4a; margin-top: 100px;'>How can Cohere help you today?</h1>", unsafe_allow_html=True)
 
54
  for msg in st.session_state.messages:
55
- with st.chat_message(msg["role"], avatar=USER_PFP if msg["role"]=="user" else AI_PFP):
56
  content = msg["content"]
57
  if isinstance(content, list):
58
  for item in content:
59
- if item.get("type")=="text":
60
- st.markdown(item.get("text"))
61
- if item.get("type")=="image_url":
62
- st.image(item.get("image_url").get("url"))
63
  else:
64
  st.markdown(content)
 
65
  if prompt := st.chat_input("Message..."):
66
  if not api_key:
67
  st.error("API key required")
68
  st.stop()
 
69
  st.session_state.first_message_sent = True
70
- st.session_state.messages.append({"role":"user","content":prompt})
71
  with st.chat_message("user", avatar=USER_PFP):
72
  st.markdown(prompt)
 
73
  co = cohere.ClientV2(api_key)
74
- content = [{"type":"text","text":prompt}]
75
- if st.session_state.image_data and selected_model.startswith("c4ai-aya-vision"):
76
- data_url = f"data:image/jpeg;base64,{st.session_state.image_data}"
77
- content.append({"type":"image_url","image_url":{"url":data_url}})
78
- response = co.chat(model=selected_model, messages=[*st.session_state.messages, {"role":"user","content":content}], temperature=0.3)
 
 
 
 
 
 
79
  items = response.message.content
80
- reply = "".join([getattr(i,'text','') for i in items])
 
81
  with st.chat_message("assistant", avatar=AI_PFP):
82
  st.markdown(reply)
83
- st.session_state.messages.append({"role":"assistant","content":items})
 
 
 
 
 
25
  api_key = st.text_input("Cohere API Key", type="password")
26
  selected_model = st.selectbox("Model", options=list(model_info.keys()))
27
  if selected_model.startswith("c4ai-aya-vision"):
28
+ uploaded = st.file_uploader("Upload image", type=["png","jpg","jpeg"], key="uploaded")
 
 
 
 
29
  if st.button("Clear Chat"):
30
+ st.session_state.clear()
 
 
31
  st.rerun()
32
  st.divider()
33
  st.subheader(selected_model)
 
40
  st.session_state.messages = []
41
  if "first_message_sent" not in st.session_state:
42
  st.session_state.first_message_sent = False
 
 
43
 
44
  if not st.session_state.first_message_sent:
45
  st.markdown("<h1 style='text-align: center; color: #4a4a4a; margin-top: 100px;'>How can Cohere help you today?</h1>", unsafe_allow_html=True)
46
+
47
  for msg in st.session_state.messages:
48
+ with st.chat_message(msg["role"], avatar=USER_PFP if msg["role"] == "user" else AI_PFP):
49
  content = msg["content"]
50
  if isinstance(content, list):
51
  for item in content:
52
+ if getattr(item, 'type', None) == "text":
53
+ st.markdown(item.text)
54
+ elif getattr(item, 'type', None) == "image_url":
55
+ st.image(item.image_url.url)
56
  else:
57
  st.markdown(content)
58
+
59
  if prompt := st.chat_input("Message..."):
60
  if not api_key:
61
  st.error("API key required")
62
  st.stop()
63
+
64
  st.session_state.first_message_sent = True
65
+ st.session_state.messages.append({"role": "user", "content": prompt})
66
  with st.chat_message("user", avatar=USER_PFP):
67
  st.markdown(prompt)
68
+
69
  co = cohere.ClientV2(api_key)
70
+ content = [{"type": "text", "text": prompt}]
71
+ if selected_model.startswith("c4ai-aya-vision") and st.session_state.get("uploaded"):
72
+ data = st.session_state.uploaded.read()
73
+ data_url = f"data:image/jpeg;base64,{base64.b64encode(data).decode('utf-8')}"
74
+ content.append({"type": "image_url", "image_url": {"url": data_url}})
75
+
76
+ response = co.chat(
77
+ model=selected_model,
78
+ messages=[*st.session_state.messages, {"role": "user", "content": content}],
79
+ temperature=0.3
80
+ )
81
  items = response.message.content
82
+ reply = "".join(getattr(i, 'text', '') for i in items)
83
+
84
  with st.chat_message("assistant", avatar=AI_PFP):
85
  st.markdown(reply)
86
+
87
+ st.session_state.messages.append({"role": "assistant", "content": items})
88
+
89
+ if "uploaded" in st.session_state:
90
+ st.session_state.uploaded = None