| from textwrap import dedent |
|
|
| import streamlit as st |
|
|
| from defaults import ( |
| PROJECT_NAME, |
| ARGILLA_URL, |
| DIBT_PARENT_APP_URL, |
| DATASET_URL, |
| DATASET_REPO_ID, |
| ) |
|
|
|
|
| def project_sidebar(): |
| if PROJECT_NAME == "DEFAULT_DOMAIN": |
| st.warning( |
| "Please set up the project configuration in the parent app before proceeding." |
| ) |
| st.stop() |
|
|
| st.sidebar.subheader(f"A Data Growing Project in the domain of {PROJECT_NAME}") |
| st.sidebar.markdown( |
| """ |
| This space helps you create a dataset seed for building diverse domain-specific datasets for aligning models. |
| """ |
| ) |
| st.sidebar.link_button(f"π Dataset Repo", DATASET_URL) |
| st.sidebar.link_button(f"π€ Argilla Space", ARGILLA_URL) |
| hub_username = DATASET_REPO_ID.split("/")[0] |
| project_name = DATASET_REPO_ID.split("/")[1] |
| st.session_state["project_name"] = project_name |
| st.session_state["hub_username"] = hub_username |
| st.session_state["hub_token"] = st.sidebar.text_input( |
| "Hub Token", type="password", value=None |
| ) |
| st.sidebar.link_button( |
| "π€ Get your Hub Token", "https://huggingface.co/settings/tokens" |
| ) |
| if all( |
| ( |
| st.session_state.get("project_name"), |
| st.session_state.get("hub_username"), |
| st.session_state.get("hub_token"), |
| ) |
| ): |
| st.success(f"Using the dataset repo {hub_username}/{project_name} on the Hub") |
|
|
| st.sidebar.divider() |
|
|
| st.sidebar.link_button("π§βπΎ New Project", DIBT_PARENT_APP_URL) |
|
|
| if st.session_state["hub_token"] is None: |
| st.error("Please provide a Hub token to generate answers") |
| st.stop() |
|
|
|
|
| def create_seed_terms(topics: list[str], perspectives: list[str]) -> list[str]: |
| """Create seed terms for self intruct to start from.""" |
|
|
| return [ |
| f"{topic} from a {perspective} perspective" |
| for topic in topics |
| for perspective in perspectives |
| ] |
|
|
|
|
| def create_application_instruction(domain: str, examples: list[dict[str, str]]) -> str: |
| """Create the instruction for Self-Instruct task.""" |
| system_prompt = dedent( |
| f"""You are an AI assistant than generates queries around the domain of {domain}. |
| Your should not expect basic but profound questions from your users. |
| The queries should reflect a diversxamity of vision and economic positions and political positions. |
| The queries may know about different methods of {domain}. |
| The queries can be positioned politically, economically, socially, or practically. |
| Also take into account the impact of diverse causes on diverse domains.""" |
| ) |
| for example in examples: |
| question = example["question"] |
| answer = example["answer"] |
| system_prompt += f"""\n- Question: {question}\n- Answer: {answer}\n""" |
|
|
| return system_prompt |
|
|