@@ -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