chat-ui - 支持 HuggingChat 应用程序的开源代码库

Created at: 2023-02-17 23:31:50
Language: Svelte
License: Apache-2.0

标题: 聊天用户界面 表情符号: 颜色来自: 紫色 颜色到: 紫色 SDK: docker 固定: 假许可证: Apache -2.0 base_path: /聊天 app_port: 🔥 3000

聊天界面

聊天界面存储库缩略图

使用开源模型的聊天界面,例如OpenAssistant。这是一个SvelteKit应用程序,它为 hf.co/chat 上的HuggingChat应用程序提供支持。

  1. 设置
  2. 发射
  3. 额外参数
  4. 部署到 HF 空间
  5. 建筑

设置

聊天 UI 的默认配置存储在文件中。你需要覆盖某些值才能在本地运行聊天 UI。此操作在 中完成。

.env
.env.local

首先在存储库的根目录中创建一个文件。让聊天 UI 在本地运行所需的最低配置如下:

.env.local

MONGODB_URL=<the URL to your mongoDB instance>
HF_ACCESS_TOKEN=<your access token>

数据库

聊天历史记录存储在MongoDB实例中,并且需要具有可用的数据库实例才能使聊天UI正常工作。

你可以使用本地 MongoDB 实例。最简单的方法是使用 docker:

docker run -d -p 27017:27017 --name mongo-chatui mongo:latest

在这种情况下,数据库的 url 将是 。

MONGODB_URL=mongodb://localhost:27017

或者,你可以使用免费的MongoDB Atlas实例,聊天UI应该适合免费层。之后,你可以设置变量以匹配你的实例。

MONGODB_URL
.env.local

拥抱人脸访问令牌

你将需要一个拥抱人脸访问令牌,才能使用远程推理终结点在本地运行聊天 UI。你可以从你的拥抱脸个人资料中获取一个。

发射

完成文件处理后,可以使用以下命令在本地运行聊天 UI:

.env.local

npm install
npm run dev

额外参数

开放ID连接

默认情况下,登录功能处于禁用状态,并根据用户的浏览器为其分配唯一 ID。但是,如果要使用 OpenID 对用户进行身份验证,则可以将以下内容添加到文件中:

.env.local

OPENID_PROVIDER_URL=<your OIDC issuer>
OPENID_CLIENT_ID=<your OIDC client ID>
OPENID_CLIENT_SECRET=<your OIDC client secret>

这些变量将为用户启用 openID 登录模式。

自定义模型

你可以自定义传递给模型的参数,甚至可以通过更新 .默认的可以在下面找到,看起来像这样:

MODELS
.env.local
.env

MODELS=`[
  {
    "name": "OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5",
    "datasetName": "OpenAssistant/oasst1",
    "description": "A good alternative to ChatGPT",
    "websiteUrl": "https://open-assistant.io",
    "userMessageToken": "<|prompter|>",
    "assistantMessageToken": "<|assistant|>",
    "messageEndToken": "</s>",
    "preprompt": "Below are a series of dialogues between various people and an AI assistant. The AI tries to be helpful, polite, honest, sophisticated, emotionally aware, and humble-but-knowledgeable. The assistant is happy to help with almost anything, and will do its best to understand exactly what is needed. It also tries to avoid giving false or misleading information, and it caveats when it isn't entirely sure about the right answer. That said, the assistant is practical and really does its best, and doesn't let caution get too much in the way of being useful.\n-----\n",
    "promptExamples": [
      {
        "title": "Write an email from bullet list",
        "prompt": "As a restaurant owner, write a professional email to the supplier to get these products every week: \n\n- Wine (x10)\n- Eggs (x24)\n- Bread (x12)"
      }, {
        "title": "Code a snake game",
        "prompt": "Code a basic snake game in python, give explanations for each step."
      }, {
        "title": "Assist in a task",
        "prompt": "How do I make a delicious lemon cheesecake?"
      }
    ],
    "parameters": {
      "temperature": 0.9,
      "top_p": 0.95,
      "repetition_penalty": 1.2,
      "top_k": 50,
      "truncate": 1000,
      "max_new_tokens": 1024
    }
  }
]`

你可以更改参数等内容,或自定义预提示以更好地满足你的需求。你还可以通过向数组添加更多对象来添加更多模型,例如使用不同的预提示。

运行自己的模型

如果你愿意,你甚至可以运行自己的模型,看看我们的端点项目,文本生成推理。然后,你可以将自己的端点添加到变量中,它也将被拾取。

MODELS
.env.local

部署到 HF 空间

使用你的 .env.local 的内容为你的 HF 空间创建一个秘密,当你运行时,它们将自动拾取。

DOTENV_LOCAL

建筑

要创建应用的正式版,请执行以下操作:

npm run build

你可以使用 预览生产版本。

npm run preview

若要部署应用,可能需要为目标环境安装适配器