问答
问答模型可以从给定的文本中检索问题的答案,这对于在文档中搜索答案很有用。
有关 question-answering
任务的更多详细信息,请查看其 专用页面!您将找到示例和相关材料。
推荐模型
- deepset/roberta-base-squad2: 适用于大多数问答领域的稳健基线模型。
- distilbert/distilbert-base-cased-distilled-squad: 小型但稳健的模型,可以回答问题。
探索所有可用的模型并找到最适合您的模型 这里.
使用 API
Python
JavaScript
cURL
import requests
API_URL = "https://api-inference.huggingface.co/models/deepset/roberta-base-squad2"
headers = {"Authorization": "Bearer hf_***"}
def query(payload):
response = requests.post(API_URL, headers=headers, json=payload)
return response.json()
output = query({
"inputs": {
"question": "What is my name?",
"context": "My name is Clara and I live in Berkeley."
},
})
要使用 Python 客户端,请参阅 huggingface_hub
的 包参考.
API 规范
请求
有效负载 | ||
---|---|---|
inputs* | object | 一对要回答的(上下文、问题)。 |
context* | string | 用于回答问题的上下文。 |
question* | string | 要回答的问题。 |
parameters | object | 问答的额外推理参数 |
top_k | integer | 要返回的答案数量(将按可能性顺序选择)。请注意,如果上下文中没有足够的选项可用,我们将返回少于 topk 个答案。 |
doc_stride | integer | 如果上下文太长而无法与问题一起适合模型,它将被分成几个具有重叠的部分。此参数控制重叠的大小。 |
max_answer_len | integer | 预测答案的最大长度(例如,仅考虑长度较短的答案)。 |
max_seq_len | integer | 传递给模型的每个块中总句子(上下文 + 问题)的标记最大长度。如果需要,上下文将被分成几个块(使用 docStride 作为重叠)。 |
max_question_len | integer | 标记化后问题的最大长度。如果需要,将进行截断。 |
handle_impossible_answer | 布尔值 | 是否接受不可能的答案。 |
align_to_words | 布尔值 | 尝试将答案与真实词语对齐。提高了对空格分隔语言的质量。可能会影响非空格分隔语言(如日语或中文)。 |
一些选项可以通过向推理 API 传递标头进行配置。以下是可用的标头
标头 | ||
---|---|---|
authorization | string | 身份验证标头,格式为 'Bearer: hf_****' ,其中 hf_**** 是具有推理 API 权限的个人用户访问令牌。您可以在 您的设置页面 生成一个。 |
x-use-cache | 布尔值,默认值为 true | 推理 API 上有一个缓存层,可以加速我们已经见过的请求。大多数模型可以使用这些结果,因为它们是确定性的(这意味着输出将始终相同)。但是,如果您使用非确定性模型,您可以将此参数设置为阻止使用缓存机制,从而导致真正的全新查询。阅读有关缓存的更多信息 此处。 |
x-wait-for-model | 布尔值,默认值为 false | 如果模型未准备就绪,则等待它,而不是接收 503。它限制了完成推理所需的请求次数。建议仅在收到 503 错误后才将此标志设置为 true,因为它将限制应用程序中已知位置的挂起。阅读有关模型可用性的更多信息 此处。 |
有关推理 API 标头的更多信息,请查看参数 指南。
响应
主体 | ||
---|---|---|
(数组) | object[] | 输出是一个对象数组。 |
answer | string | 问题的答案。 |
score | 数字 | 与答案相关的概率。 |
start | integer | 答案在输入中开始的字符位置。 |
end | integer | 答案在输入中结束的字符位置。 |