Skip to content

Commit b92d64a

Browse files
authored
Merge pull request #81 from hamdan-27/textbox-option
added text-area option for textbox feedback
2 parents 404b924 + a8002b1 commit b92d64a

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

trubrics/integrations/streamlit/collect.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ def st_feedback(
3737
component: str,
3838
feedback_type: str,
3939
model: str,
40+
textbox_type: str = "text-input",
4041
prompt_id: Optional[str] = None,
4142
tags: list = [],
4243
metadata: dict = {},
@@ -58,6 +59,7 @@ def st_feedback(
5859
- textbox: open textbox feedback
5960
- thumbs: 👍 / 👎 UI buttons
6061
- faces: 😞 / 🙁 / 😐 / 🙂 / 😀 UI buttons
62+
textbox_type: if textbox selected as feedback_type, the type of textbox to use ["text-input", "text-area"]
6163
model: the model used - can be a model version, a link to the saved model artifact in cloud storage, etc
6264
prompt_id: id of the prompt object
6365
tags: a list of tags for the feedback
@@ -74,7 +76,7 @@ def st_feedback(
7476
if key is None:
7577
key = feedback_type
7678
if feedback_type == "textbox":
77-
text = self.st_textbox_ui(key, label=open_feedback_label)
79+
text = self.st_textbox_ui(type=textbox_type, key=key, label=open_feedback_label)
7880
if text:
7981
user_response = {"type": feedback_type, "score": None, "text": text}
8082
if save_to_trubrics:
@@ -160,11 +162,14 @@ def _pydantic_to_dict(feedback: Feedback) -> dict:
160162
return feedback.dict()
161163

162164
@staticmethod
163-
def st_textbox_ui(key: Optional[str] = None, label: Optional[str] = None) -> Optional[str]:
165+
def st_textbox_ui(
166+
type: str = "text-input", key: Optional[str] = None, label: Optional[str] = None
167+
) -> Optional[str]:
164168
"""
165169
Trubrics 'textbox' UI component.
166170
167171
Args:
172+
type: type of textbox to use (should be one of ['text-area', 'text-input'])
168173
key: a key for the streamlit components (necessary if calling this method multiple times with the same type)
169174
label: the textbox's streamlit label
170175
"""
@@ -181,10 +186,17 @@ def clear_session_state():
181186
st.session_state[f"previous_{key}_state"] = st.session_state[f"{key}_title"]
182187
st.session_state[f"{key}_title"] = ""
183188

184-
title = st.text_input(
185-
label=label or "Provide some feedback",
186-
key=f"{key}_title",
187-
)
189+
if type not in ("text-input", "text-area"):
190+
raise ValueError("textbox_type must be one of ['text-area', 'text-input'].")
191+
else:
192+
if type == "text-input":
193+
title = st.text_input(
194+
label=label or "Provide some feedback",
195+
key=f"{key}_title",
196+
)
197+
elif type == "text-area":
198+
title = st.text_area(label=label or "Provide some feedback", key=f"{key}_title")
199+
188200
if title:
189201
st.button("Save feedback", on_click=clear_session_state, key=f"{key}_save_button")
190202
if st.session_state[f"{key}_save_button"]:

0 commit comments

Comments
 (0)