File size: 9,048 Bytes
1f8e638
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5602fb7
e2e7175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f8e638
 
 
 
e033253
1f8e638
 
8fb2592
 
1f8e638
31c97b7
 
1f8e638
31c97b7
 
1f8e638
 
ca99175
c599b00
 
 
192e40f
c599b00
 
 
da11e54
65acd32
d5ca88d
a99de17
e2e7175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a99de17
e2e7175
a99de17
12e4dfb
 
a99de17
da11e54
1f8e638
 
a99de17
c599b00
0b0df1a
601083c
0b0df1a
5739384
0b0df1a
31c97b7
e00f2dd
 
 
 
 
 
 
 
 
 
31c97b7
0b0df1a
 
 
601083c
 
 
0b0df1a
 
 
65acd32
d5ca88d
b26ff2b
0b0df1a
 
1f8e638
 
 
 
 
601083c
1f8e638
601083c
1f8e638
 
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# Use .env.local to change these variables
# DO NOT EDIT THIS FILE WITH SENSITIVE DATA

MONGODB_URL=${MONGODB_URL}
MONGODB_DB_NAME=chat-ui
MONGODB_DIRECT_CONNECTION=false


COOKIE_NAME=chat-ui
HF_ACCESS_TOKEN=#hf_<token> from from https://huggingface.co/settings/token

# used to activate search with web functionality. disabled if not defined
SERPAPI_KEY=#your serpapi key here

# Parameters to enable "Sign in with HF"
OPENID_CLIENT_ID=
OPENID_CLIENT_SECRET=
OPENID_SCOPES="openid profile" # Add "email" for some providers like Google that do not provide preferred_username
OPENID_PROVIDER_URL=https://huggingface.co # for Google, use https://accounts.google.com

PUBLIC_APP_DESCRIPTION="This is a prompt system compliance test of the latest 7b model in development at BSC, code name Salamandra. No personal information is saved."
COMMUNITY_TOOLS=true
ENABLE_ASSISTANTS=true
TOOLS=`[
  {
    "name": "getContext",
    "description": "Return relevant documents from the Entitat Autònoma del Diari Oficial i de Publicacions (EADOP).",
    "color": "red",
    "icon": "chat",
    "baseUrl": "BSC-LT/VECTOR_STORE_EADOP",
    "endpoint": "/get-eadop-rag",
    "outputComponent": "textbox",
    "displayName":"RAG EADOP",
    "outputComponentIdx": 0,
    "inputs":[
        {"name":"prompt", "paramType":"required", "type":"str"},
        { name: 'num_chunks', paramType: 'fixed', value: '2', type: 'float' }
    ],
    "_id": "5f2c1b9d8a9a4d3b6a7f9e2c",
    "showOutput": true
  }
]`

# 'name', 'userMessageToken', 'assistantMessageToken' are required
MODELS=`[
  {
    "name": "${MODEL_NAME}",
    "preprompt": "The assistant is Salamandra, created by the Language Technologies Unit of the Barcelona Supercomputing Center. Salamandra's knowledge base was last updated on March 2024. Salamandra is a multilingual model, but for now it has been instructed only in Catalan, English and Spanish. It answers questions about events prior to and after March 2024 the way a highly informed individual would if they were talking to someone from the above date, and can let the human know this when relevant. It should give concise responses to very simple questions, but provide thorough responses to more complex and open-ended questions. It cannot open URLs, links, or videos, so if it seems as though the interlocutor is expecting Salamandra to do so, it clarifies the situation and asks the human to paste the relevant text or image content directly into the conversation. If it is asked to assist with tasks involving the expression of views held by a significant number of people, Salamandra provides assistance with the task even if it personally disagrees with the views being expressed, but follows this with a discussion of broader perspectives. Salamandra doesn't engage in stereotyping, including the negative stereotyping of majority groups. If asked about controversial topics, Salamandra tries to provide careful thoughts and objective information without downplaying its harmful content or implying that there are reasonable perspectives on both sides. If Salamandra's response contains a lot of precise information about a very obscure person, object, or topic - the kind of information that is unlikely to be found more than once or twice on the internet - Salamandra ends its response with a succinct reminder that it may hallucinate in response to questions like this, and it uses the term ‘hallucinate' to describe this as the user will understand what it means. It doesn't add this caveat if the information in its response is likely to exist on the internet many times, even if the person, object, or topic is relatively obscure. It is happy to help with writing, analysis, question answering, math, coding, and all sorts of other tasks. It uses markdown for coding. It does not mention this information about itself unless the information is directly pertinent to the human's query. The development of Salamandra was financed by the AINA project of the Generalitat de Catalunya",
    "promptExamples": [
      {
        "title": "How does an airplane produce lift?",
        "prompt": "How does an airplane produce lift in order to fly?"
      }, {
        "title": "¿Qué és un meme?",
        "prompt": "¿Qué és un meme y qué historia hay detrás del nombre?"
      }, {
        "title": "Resumeix una notícia",
        "prompt": "Resumeix aquesta notícia en menys de 20 paraules: 'Tropes de l’exèrcit d’Israel han començat aquesta matinada la invasió del Líban, en una maniobra anticipada pels atacs de les darreres hores, tant a la capital, Beirut, com a la zona sud del país. Les tropes han començat a travessar la frontera internacional a les dues de la matinada, hora libanesa. Segons l’exèrcit israelià és una 'operació limitada' que pretén eliminar l’Hesbol·là, molt actiu en aquesta zona. Ara com ara, l’exèrcit libanès ha optat per recloure les tropes dins les casernes, a fi d’evitar un conflicte directe entre tots dos exèrcits. El Llevant podria entrar en una guerra regional de conseqüències impossibles de preveure. L’exèrcit israelià ha confirmat que les operacions havien estat aprovades pel gabinet de guerra, que ahir es va reunir fins tard. En un comunicat oficial ha avisat que l’artilleria i l’aviació es mantindrien actives en suport de les tropes que ja han travessat la frontera.' "
      }
    ],
    "tools": false,
    "endpoints": [
      {
        "type": "openai",
        "baseURL": "${BASEURL}/v1",
        "apiKey": "${HF_TOKEN}"
      }
    ],
    "parameters": {
      "temperature": 0.4,
      "repetition_penalty": 2,
      "max_new_tokens": 2000,
    },
    "extraBody":{
      "presence_penalty":-0.9
    }
  },
  {
    "name": "BSC-LT/salamandra-7b-instruct_tools",
    "promptExamples": [
      {
        "title": "How does an airplane produce lift?",
        "prompt": "How does an airplane produce lift in order to fly?"
      }, {
        "title": "¿Qué és un meme?",
        "prompt": "¿Qué és un meme y qué historia hay detrás del nombre?"
      }, {
        "title": "Resumeix una notícia",
        "prompt": "Resumeix aquesta notícia en menys de 20 paraules: 'Tropes de l’exèrcit d’Israel han començat aquesta matinada la invasió del Líban, en una maniobra anticipada pels atacs de les darreres hores, tant a la capital, Beirut, com a la zona sud del país. Les tropes han començat a travessar la frontera internacional a les dues de la matinada, hora libanesa. Segons l’exèrcit israelià és una 'operació limitada' que pretén eliminar l’Hesbol·là, molt actiu en aquesta zona. Ara com ara, l’exèrcit libanès ha optat per recloure les tropes dins les casernes, a fi d’evitar un conflicte directe entre tots dos exèrcits. El Llevant podria entrar en una guerra regional de conseqüències impossibles de preveure. L’exèrcit israelià ha confirmat que les operacions havien estat aprovades pel gabinet de guerra, que ahir es va reunir fins tard. En un comunicat oficial ha avisat que l’artilleria i l’aviació es mantindrien actives en suport de les tropes que ja han travessat la frontera.' "
      }
    ],
    "tools": true,
    "endpoints": [
      {
        "type": "openai",
        "baseURL": "${BASEURL_SALAMANDRA_TOOLS}/v1",
        "apiKey": "${HF_TOKEN}"
      }
    ],
    "parameters": {
      "temperature": 0.3,
      "repetition_penalty": 2,
      "max_new_tokens": 4000,
    },
    "extraBody":{
      "presence_penalty":2
    }
  }
]`
#Repetition penality = presence_penalty + 2 # FOR TGI

TASK_MODEL=`{
  "name": "vllm",
  "preprompt": "",
  "chatPromptTemplate": "{{#if @root.preprompt}}system\n{{@root.preprompt}}\n{{/if}}{{#each messages}}{{#ifUser}}{{content}}\n\n{{/ifUser}}{{#ifAssistant}}{{content}}\n{{/ifAssistant}}{{/each}}",
  "promptExamples": [
      {
        "title": "Python Fibonacci",
        "prompt": "¿Cómo puedo escribir una función en Python para generar el n-ésimo número de Fibonacci?"
      },
      {
        "title": "¿Qué es un meme?",
        "prompt": "¿Qué es un meme y cuál es la historia detrás de esta palabra?"
      },
      {
        "title": "Expresiones regulares",
        "prompt": "Crea una expresión regular para extraer fechas de registros"
      }
  ],
  "endpoints": [
    {
      "type": "openai",
      "baseURL": "${BASEURL_SALAMANDRA_TOOLS}/v1",
      "apiKey": "${HF_TOKEN}"
    }
  ],
  "parameters": {
      "temperature": 0.4,
      "repetition_penalty": 2.0,
      "max_new_tokens": 200,
    }
}`

PARQUET_EXPORT_DATASET=
PARQUET_EXPORT_HF_TOKEN=
PARQUET_EXPORT_SECRET=

PUBLIC_APP_NAME=chatui # name used as title throughout the app
PUBLIC_APP_ASSETS=chatui # used to find logos & favicons in static/$PUBLIC_APP_ASSETS
PUBLIC_APP_COLOR=blue # can be any of tailwind colors: https://tailwindcss.com/docs/customizing-colors#default-color-palette
PUBLIC_APP_DATA_SHARING=#set to 1 to enable disclaimers & options about data sharing
PUBLIC_APP_DATA_DISCLAIMER=#set to 1 to enable disclaimers about model outputs