Chat UI 文档

模型概述

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

模型概述

你可以通过更新 .env.local 文件中的 MODELS 变量来自定义传递给模型的参数,甚至使用新模型。默认配置可以在 .env 文件中找到,如下所示:

MODELS=`[
  {
    "name": "mistralai/Mistral-7B-Instruct-v0.2",
    "displayName": "mistralai/Mistral-7B-Instruct-v0.2",
    "description": "Mistral 7B is a new Apache 2.0 model, released by Mistral AI that outperforms Llama2 13B in benchmarks.",
    "websiteUrl": "https://mistral.org.cn/news/announcing-mistral-7b/",
    "preprompt": "",
    "chatPromptTemplate" : "<s>{{#each messages}}{{#ifUser}}[INST] {{#if @first}}{{#if @root.preprompt}}{{@root.preprompt}}\n{

{/if}

}{

{/if}

}{{content}} [/INST]{{/ifUser}}{{#ifAssistant}}{{content}}</s>{{/ifAssistant}}{{/each}}",
    "parameters": {
      "temperature": 0.3,
      "top_p": 0.95,
      "repetition_penalty": 1.2,
      "top_k": 50,
      "truncate": 3072,
      "max_new_tokens": 1024,
      "stop": ["</s>"]
    },
    "promptExamples": [
      {
        "title": "Write an email",
        "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 game",
        "prompt": "Code a basic snake game in python, give explanations for each step."
      }, {
        "title": "Recipe help",
        "prompt": "How do I make a delicious lemon cheesecake?"
      }
    ]
  }
]`

你可以更改参数,或者自定义前置提示(preprompt)以更好地满足你的需求。你还可以通过向数组中添加更多对象来增加更多模型,例如使用不同的前置提示。

聊天提示模板

在查询模型以获取聊天响应时,会使用 chatPromptTemplate 模板。messages 是一个聊天消息数组,其格式为 [{ content: string }, ...]。为了识别消息是用户消息还是助手消息,可以使用 ifUserifAssistant 块级帮助程序。

以下是默认的 chatPromptTemplate,为了便于阅读,已添加了换行和缩进。你可以在这里找到 HuggingChat 生产环境中使用的提示。使用的模板语言是 Handlebars

{{preprompt}}
{{#each messages}}
	{

{#ifUser}

}{{@root.userMessageToken}}{{content}}{{@root.userMessageEndToken}}{{/ifUser}}
	{

{#ifAssistant
	}

}{{@root.assistantMessageToken}}{{content}}{{@root.assistantMessageEndToken}}{{/ifAssistant}}
{{/each}}
{{assistantMessageToken}}

自定义端点授权

Basic 和 Bearer

自定义端点可能需要授权,具体取决于你的配置方式。身份验证通常会设置为 BasicBearer

对于 Basic,我们需要生成用户名和密码的 base64 编码。

echo -n "USER:PASS" | base64

VVNFUjpQQVNT

对于 Bearer,你可以使用令牌,令牌可以从这里获取。

然后,你可以将生成的信息和 authorization 参数添加到你的 .env.local 文件中。

"endpoints": [
  {
    "url": "https://HOST:PORT",
    "authorization": "Basic VVNFUjpQQVNT",
  }
]

请注意,如果 HF_TOKEN 也被设置或不为空,它将优先于此设置。

托管在多个自定义端点上的模型

如果托管的模型将在多个服务器/实例上可用,请将 weight 参数添加到你的 .env.local 文件中。weight 将用于确定请求特定端点的概率。

"endpoints": [
  {
    "url": "https://HOST:PORT",
    "weight": 1
  },
  {
    "url": "https://HOST:PORT",
    "weight": 2
  }
  ...
]

客户端证书认证 (mTLS)

自定义端点可能需要客户端证书认证,具体取决于你的配置方式。要在 Chat UI 和你的自定义端点之间启用 mTLS,你需要将 USE_CLIENT_CERTIFICATE 设置为 true,并将 CERT_PATHKEY_PATH 参数添加到你的 .env.local 文件中。这些参数应指向你本地机器上证书和密钥文件的位置。证书和密钥文件应为 PEM 格式。密钥文件可以用密码短语加密,在这种情况下,你还需要将 CLIENT_KEY_PASSWORD 参数添加到你的 .env.local 文件中。

如果你使用的是由私有 CA 签名的证书,你还需要将 CA_PATH 参数添加到你的 .env.local 文件中。此参数应指向你本地机器上 CA 证书文件的位置。

如果你使用的是自签名证书(例如,用于测试或开发目的),你可以在 .env.local 文件中将 REJECT_UNAUTHORIZED 参数设置为 false。这将禁用证书验证,并允许 Chat UI 连接到你的自定义端点。

特定嵌入模型

一个模型可以使用在 TEXT_EMBEDDING_MODELS 下定义的任何嵌入模型(目前在网页搜索时使用)。默认情况下,它将使用第一个嵌入模型,但可以通过 embeddingModel 字段进行更改。

TEXT_EMBEDDING_MODELS = `[
  {
    "name": "Xenova/gte-small",
    "chunkCharLength": 512,
    "endpoints": [
      {"type": "transformersjs"}
    ]
  },
  {
    "name": "intfloat/e5-base-v2",
    "chunkCharLength": 768,
    "endpoints": [
      {"type": "tei", "url": "http://127.0.0.1:8080/", "authorization": "Basic VVNFUjpQQVNT"},
      {"type": "tei", "url": "http://127.0.0.1:8081/"}
    ]
  }
]`

MODELS=`[
  {
      "name": "Ollama Mistral",
      "chatPromptTemplate": "...",
      "embeddingModel": "intfloat/e5-base-v2"
      "parameters": {
        ...
      },
      "endpoints": [
        ...
      ]
  }
]`
< > 在 GitHub 上更新