跳到主要內容

ChatHuggingFace

這將幫助您開始使用 langchain_huggingface 聊天模型。如需所有 ChatHuggingFace 功能和設定的詳細文件,請前往 API 參考。如需 Hugging Face 支援的模型清單,請查看此頁面

概觀

整合詳細資訊

整合詳細資訊

類別套件本地可序列化JS 支援套件下載套件最新版
ChatHuggingFacelangchain-huggingfacebetaPyPI - DownloadsPyPI - Version

模型功能

工具呼叫結構化輸出JSON 模式圖像輸入音訊輸入視訊輸入Token 級別串流原生非同步Token 使用量Logprobs

設定

若要存取 Hugging Face 模型,您需要建立 Hugging Face 帳戶、取得 API 金鑰,並安裝 langchain-huggingface 整合套件。

憑證

產生 Hugging Face 存取 Token 並將其儲存為環境變數:HUGGINGFACEHUB_API_TOKEN

import getpass
import os

if not os.getenv("HUGGINGFACEHUB_API_TOKEN"):
os.environ["HUGGINGFACEHUB_API_TOKEN"] = getpass.getpass("Enter your token: ")

安裝

類別套件本地可序列化JS 支援套件下載套件最新版
ChatHuggingFacelangchain_huggingfacePyPI - DownloadsPyPI - Version

模型功能

工具呼叫結構化輸出JSON 模式圖像輸入音訊輸入視訊輸入Token 級別串流原生非同步Token 使用量Logprobs

設定

若要存取 langchain_huggingface 模型,您需要建立 Hugging Face 帳戶、取得 API 金鑰,並安裝 langchain_huggingface 整合套件。

憑證

您需要將 Hugging Face 存取 Token 儲存為環境變數:HUGGINGFACEHUB_API_TOKEN

import getpass
import os

os.environ["HUGGINGFACEHUB_API_TOKEN"] = getpass.getpass(
"Enter your Hugging Face API key: "
)
%pip install --upgrade --quiet  langchain-huggingface text-generation transformers google-search-results numexpr langchainhub sentencepiece jinja2 bitsandbytes accelerate

[notice] A new release of pip is available: 24.0 -> 24.1.2
[notice] To update, run: pip install --upgrade pip
Note: you may need to restart the kernel to use updated packages.

例項化

您可以透過兩種不同的方式例項化 ChatHuggingFace 模型,可以從 HuggingFaceEndpointHuggingFacePipeline 例項化。

HuggingFaceEndpoint

from langchain_huggingface import ChatHuggingFace, HuggingFaceEndpoint

llm = HuggingFaceEndpoint(
repo_id="HuggingFaceH4/zephyr-7b-beta",
task="text-generation",
max_new_tokens=512,
do_sample=False,
repetition_penalty=1.03,
)

chat_model = ChatHuggingFace(llm=llm)
The token has not been saved to the git credentials helper. Pass `add_to_git_credential=True` in this function directly or `--add-to-git-credential` if using via `huggingface-cli` if you want to set the git credential as well.
Token is valid (permission: fineGrained).
Your token has been saved to /Users/isaachershenson/.cache/huggingface/token
Login successful

HuggingFacePipeline

from langchain_huggingface import ChatHuggingFace, HuggingFacePipeline

llm = HuggingFacePipeline.from_model_id(
model_id="HuggingFaceH4/zephyr-7b-beta",
task="text-generation",
pipeline_kwargs=dict(
max_new_tokens=512,
do_sample=False,
repetition_penalty=1.03,
),
)

chat_model = ChatHuggingFace(llm=llm)
config.json:   0%|          | 0.00/638 [00:00<?, ?B/s]
model.safetensors.index.json:   0%|          | 0.00/23.9k [00:00<?, ?B/s]
Downloading shards:   0%|          | 0/8 [00:00<?, ?it/s]
model-00001-of-00008.safetensors:   0%|          | 0.00/1.89G [00:00<?, ?B/s]
model-00002-of-00008.safetensors:   0%|          | 0.00/1.95G [00:00<?, ?B/s]
model-00003-of-00008.safetensors:   0%|          | 0.00/1.98G [00:00<?, ?B/s]
model-00004-of-00008.safetensors:   0%|          | 0.00/1.95G [00:00<?, ?B/s]
model-00005-of-00008.safetensors:   0%|          | 0.00/1.98G [00:00<?, ?B/s]
model-00006-of-00008.safetensors:   0%|          | 0.00/1.95G [00:00<?, ?B/s]
model-00007-of-00008.safetensors:   0%|          | 0.00/1.98G [00:00<?, ?B/s]
model-00008-of-00008.safetensors:   0%|          | 0.00/816M [00:00<?, ?B/s]
Loading checkpoint shards:   0%|          | 0/8 [00:00<?, ?it/s]
generation_config.json:   0%|          | 0.00/111 [00:00<?, ?B/s]

使用量化例項化

若要執行模型的量化版本,您可以如下指定 bitsandbytes 量化設定

from transformers import BitsAndBytesConfig

quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype="float16",
bnb_4bit_use_double_quant=True,
)

並將其作為 model_kwargs 的一部分傳遞給 HuggingFacePipeline

llm = HuggingFacePipeline.from_model_id(
model_id="HuggingFaceH4/zephyr-7b-beta",
task="text-generation",
pipeline_kwargs=dict(
max_new_tokens=512,
do_sample=False,
repetition_penalty=1.03,
return_full_text=False,
),
model_kwargs={"quantization_config": quantization_config},
)

chat_model = ChatHuggingFace(llm=llm)

調用

from langchain_core.messages import (
HumanMessage,
SystemMessage,
)

messages = [
SystemMessage(content="You're a helpful assistant"),
HumanMessage(
content="What happens when an unstoppable force meets an immovable object?"
),
]

ai_msg = chat_model.invoke(messages)
print(ai_msg.content)
According to the popular phrase and hypothetical scenario, when an unstoppable force meets an immovable object, a paradoxical situation arises as both forces are seemingly contradictory. On one hand, an unstoppable force is an entity that cannot be stopped or prevented from moving forward, while on the other hand, an immovable object is something that cannot be moved or displaced from its position. 

In this scenario, it is un

API 參考

如需所有 ChatHuggingFace 功能和設定的詳細文件,請前往 API 參考: https://langchain-python.dev.org.tw/api_reference/huggingface/chat_models/langchain_huggingface.chat_models.huggingface.ChatHuggingFace.html

API 參考

如需所有 ChatHuggingFace 功能和設定的詳細文件,請前往 API 參考: https://langchain-python.dev.org.tw/api_reference/huggingface/chat_models/langchain_huggingface.chat_models.huggingface.ChatHuggingFace.html


此頁面是否對您有幫助?