gen-synth-data / utils.py
Ben Burtenshaw
run pipeline locally
fc828f1
raw
history blame
2.91 kB
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