File size: 3,141 Bytes
d61b6cb
 
 
 
 
 
 
 
 
 
 
5afd6f9
d61b6cb
 
 
 
 
5afd6f9
d61b6cb
 
5afd6f9
 
 
d61b6cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5afd6f9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d61b6cb
 
 
 
 
d7567fa
d61b6cb
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import streamlit as st
from PIL import Image

def set_state_if_absent(key, value):
    if key not in st.session_state:
        st.session_state[key] = value

def set_initial_state():
    set_state_if_absent("top_k", "How many of the top posts would you like a summary for?")
    set_state_if_absent("result", None)
    set_state_if_absent("haystack_started", False)
    set_state_if_absent("model", None)

def reset_results(*args):
    st.session_state.result = None
    st.session_state.top_k = None

def set_hf_token(api_key: str):
    st.session_state["HF_TGI_TOKEN"] = api_key

def set_openai_key(api_key: str):
    st.session_state["OPENAI_API_KEY"] = api_key

def sidebar():
    with st.sidebar:
        # image = Image.open('logo/haystack-logo-colored.png')
        st.markdown("Thanks for coming to this 🤗 Space.\n\n"
        "This is a project for fun, and is not a final product."
        " There's a lot that can be improved to make this app better.\n\n"
        "**Take results with a grain of** 🧂\n\n"
        "For more on how this was built, instructions to run locally and to contribute: [visit GitHub](https://github.com/TuanaCelik/hackernews-summaries#readme)")

        st.markdown(
            "## How to use\n"
            "1. Enter your Hugging Face Token below\n"
            "2. Select the number of summaries you want\n"
            "3. Enjoy 🤗\n"
        )

        if st.session_state.model == "Mistral":
            api_key_input = st.text_input(
                "Hugging Face Token",
                type="password",
                placeholder="Paste your Hugging Face TGI Token",
                help="You can get your API key from https://platform.openai.com/account/api-keys.",
                value=st.session_state.get("HF_TGI_TOKEN", ""),
            )
            if api_key_input:
                set_hf_token(api_key_input)
        
        elif st.session_state.model == "GPT-4":
            api_key_input = st.text_input(
                "OpenAI API Key",
                type="password",
                placeholder="Paste your OpenAI API Key",
                help="You can get your API key from https://platform.openai.com/account/api-keys.",
                value=st.session_state.get("OPENAI_API_KEY", ""),
            )
            if api_key_input:
                set_openai_key(api_key_input)
        

        st.markdown("---")
        st.markdown(
            "## How this works\n"
            "This app was built with [Haystack 2.0-Beta](https://haystack.deepset.ai) using the"
            " [`HuggingFaceTGIGenerator`](https://docs.haystack.deepset.ai/v2.0/docs/huggingfacetgigenerator) and [`PromptBuilder`](https://docs.haystack.deepset.ai/v2.0/docs/promptbuilder).\n\n"
            " The source code is also on [GitHub](https://github.com/TuanaCelik/hackernews-summaries)"
            " with instructions to run locally.\n"
            "You can see how the `PromptBuilder` was set up [here](https://github.com/TuanaCelik/hackernews-summaries/blob/main/utils/haystack.py)")
        st.markdown("---")
        st.markdown("Made by [tuanacelik](https://twitter.com/tuanacelik)")