Hugging Face x LangChain: 全新 LangChain 合作伙伴包
我们很高兴官宣发布 langchain_huggingface
,这是一个由 Hugging Face 和 LangChain 共同维护的 LangChain 合作伙伴包。这个新的 Python 包旨在将 Hugging Face 最新功能引入 LangChain 并保持同步。
源自社区,服务社区
目前,LangChain 中所有与 Hugging Face 相关的类都是由社区贡献的。虽然我们以此为基础蓬勃发展,但随着时间的推移,其中一些类在设计时由于缺乏来自 Hugging Face 的内部视角而在后期被废弃。
通过 Langchain 合作伙伴包这个方式,我们的目标是缩短将 Hugging Face 生态系统中的新功能带给 LangChain 用户所需的时间。
langchain-huggingface
与 LangChain 无缝集成,为在 LangChain 生态系统中使用 Hugging Face 模型提供了一种可用且高效的方法。这种伙伴关系不仅仅涉及到技术贡献,还展示了双方对维护和不断改进这一集成的共同承诺。
起步
langchain-huggingface
的起步非常简单。以下是安装该 软件包 的方法:
pip install langchain-huggingface
-
软件包地址 https://github.com/langchain-ai/langchain/tree/master/libs/partners/huggingface
现在,包已经安装完毕,我们来看看里面有什么吧!
LLM 文本生成
HuggingFacePipeline
transformers
中的 Pipeline 类是 Hugging Face 工具箱中最通用的工具。LangChain 的设计主要是面向 RAG 和 Agent 应用场景,因此,在 Langchain 中流水线被简化为下面几个以文本为中心的任务: 文本生成
、 文生文
、 摘要
、 翻译
等。
-
Pipeline 文档 https://hf.co/docs/transformers/main_classes/pipelines
用户可以使用 from_model_id
方法直接加载模型:
from langchain_huggingface import HuggingFacePipeline
llm = HuggingFacePipeline.from_model_id(
model_id="microsoft/Phi-3-mini-4k-instruct",
task="text-generation",
pipeline_kwargs={
"max_new_tokens": 100,
"top_k": 50,
"temperature": 0.1,
},
)
llm.invoke("Hugging Face is")
也可以自定义流水线,再传给 HuggingFacePipeline
类:
from transformers import AutoModelForCausalLM, AutoTokenizer,pipeline
model_id = "microsoft/Phi-3-mini-4k-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
load_in_4bit=True,
#attn_implementation="flash_attention_2", # if you have an ampere GPU
)
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=100, top_k=50, temperature=0.1)
llm = HuggingFacePipeline(pipeline=pipe)
llm.invoke("Hugging Face is")
使用 HuggingFacePipeline
时,模型是加载至本机并在本机运行的,因此你可能会受到本机可用资源的限制。
HuggingFaceEndpoint
该类也有两种方法。你可以使用 repo_id
参数指定模型。也可以使用 endpoint_url
指定服务终端,这些终端使用 无服务器 API,这对于有 Hugging Face 专业帐户 或 企业 hub 的用户大有好处。普通用户也可以通过在代码环境中设置自己的 HF 令牌从而在免费请求数配额内使用终端。
-
无服务器 API https://hf.co/inference-api/serverless -
专业帐户 https://hf.co/subscribe/pro -
企业 hub https://hf.co/enterprise
from langchain_huggingface import HuggingFaceEndpoint
llm = HuggingFaceEndpoint(
repo_id="meta-llama/Meta-Llama-3-8B-Instruct",
task="text-generation",
max_new_tokens=100,
do_sample=False,
)
llm.invoke("Hugging Face is")
llm = HuggingFaceEndpoint(
endpoint_url="<endpoint_url>",
task="text-generation",
max_new_tokens=1024,
do_sample=False,
)
llm.invoke("Hugging Face is")
该类在底层实现时使用了 InferenceClient,因此能够为已部署的 TGI 实例提供面向各种用例的无服务器 API。
-
InferenceClient https://hf.co/docs/huggingface_hub/en/package_reference/inference_client
ChatHuggingFace
每个模型都有最适合自己的特殊词元。如果没有将这些词元添加到提示中,将大大降低模型的表现。
为了把用户的消息转成 LLM 所需的提示,大多数 LLM 分词器中都提供了一个名为 chat_template 的成员属性。
-
chat_template https://hf.co/docs/transformers/chat_templated
要了解不同模型的 chat_template
的详细信息,可访问我创建的 space!
-
Space 地址 https://hf.co/spaces/Jofthomas/Chat_template_viewer
ChatHuggingFace
类对 LLM 进行了包装,其接受用户消息作为输入,然后用 tokenizer.apply_chat_template
方法构造出正确的提示。
from langchain_huggingface import ChatHuggingFace, HuggingFaceEndpoint
llm = HuggingFaceEndpoint(
endpoint_url="<endpoint_url>",
task="text-generation",
max_new_tokens=1024,
do_sample=False,
)
llm_engine_hf = ChatHuggingFace(llm=llm)
llm_engine_hf.invoke("Hugging Face is")
上述代码等效于:
# with mistralai/Mistral-7B-Instruct-v0.2
llm.invoke("<s>[INST] Hugging Face is [/INST]")
# with meta-llama/Meta-Llama-3-8B-Instruct
llm.invoke("""<|begin_of_text|><|start_header_id|>user<|end_header_id|>Hugging Face is<|eot_id|><|start_header_id|>assistant<|end_header_id|>""")
嵌入
Hugging Face 里有很多非常强大的嵌入模型,你可直接把它们用于自己的流水线。
首先,选择你想要的模型。关于如何选择嵌入模型,一个很好的参考是 MTEB 排行榜。
-
MTEB 排行榜 https://hf.co/spaces/mteb/leaderboard
HuggingFaceEmbeddings
该类使用 sentence-transformers 来计算嵌入。其计算是在本机进行的,因此需要使用你自己的本机资源。
-
sentence-transformers https://sbert.net/
from langchain_huggingface.embeddings import HuggingFaceEmbeddings
model_name = "mixedbread-ai/mxbai-embed-large-v1"
hf_embeddings = HuggingFaceEmbeddings(
model_name=model_name,
)
texts = ["Hello, world!", "How are you?"]
hf_embeddings.embed_documents(texts)
HuggingFaceEndpointEmbeddings
HuggingFaceEndpointEmbeddings
与 HuggingFaceEndpoint
对 LLM 所做的非常相似,其在实现上也是使用 InferenceClient 来计算嵌入。它可以与 hub 上的模型以及 TEI 实例一起使用,TEI 实例无论是本地部署还是在线部署都可以。
from langchain_huggingface.embeddings import HuggingFaceEndpointEmbeddings
hf_embeddings = HuggingFaceEndpointEmbeddings(
model= "mixedbread-ai/mxbai-embed-large-v1",
task="feature-extraction",
huggingfacehub_api_token="<HF_TOKEN>",
)
texts = ["Hello, world!", "How are you?"]
hf_embeddings.embed_documents(texts)
总结
我们致力于让 langchain-huggingface
变得越来越好。我们将积极监控反馈和问题,并努力尽快解决它们。我们还将不断添加新的特性和功能,以拓展该软件包使其支持更广泛的社区应用。我们强烈推荐你尝试 langchain-huggingface
软件包并提出宝贵意见,有了你的支持,这个软件包的未来道路才会越走越宽。
英文原文: https://hf.co/blog/langchain
原文作者: Joffrey Thomas,Kirill Kondratenko,Erick Friis
译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理。
本文分享自微信公众号 - Hugging Face(gh_504339124f0f)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
FML-0.5.9 版本发布
FML—— 快速(维度)建模语言是一个用 Java 实现的维度建模语言 SDK,主要是参考了 kimball 建模理论和阿里 Onedata 方法论,定义一套用于表达上述理论中的模型语法,来做模型设计,该语言是面向数据建模和数据开发同学,同时针对为了解决模型发布的效率,基于当前 SDK 封装了一套从模型表达转换其他不同引擎的 DDL 能力,目前引擎包括:Hive,Hologres,Mysql 等。 使用 Java 实现目的主要是使用了 java 的语法解析工具来做语法的解析处理。 目前 FML 可以在 Dataworks 的智能建模工具上使用,方便建模同学能够快速的调整模型结构。 具体可以参考这里:https://help.aliyun.com/zh/dataworks/user-guide/use-fml-statements-to-configure-and-manage-data-tables?spm=a2c4g.11174283.0.0.16b4467fOJ1Kbg 说明文档: https://github.com/alibaba/fast-modeling-language/...
- 下一篇
广东:到 2025 年全省 AI 核心产业规模超过 3000 亿元
广东省人民政府办公厅印近日发布《广东省关于人工智能赋能千行百业的若干措施》(以下简称《措施》)。从四大方面提出45项具体措施,目标到2025年,全省算力规模超过40EFLOPS,人工智能核心产业规模超过3000亿元。 到2027年,算力规模超过60EFLOPS,全国领先的算法体系和算力网络体系基本形成,人工智能核心产业规模超过4400亿元;聚焦制造、教育、养老等领域,打造500个以上应用场景,各行各业劳动生产率显著提升目标。 在加大人工智能核心芯片器件供给方面,《措施》提出,建立人工智能芯片生态体系、打造智能感知产业体系。到2027年,人工智能芯片生态体系初步建成,实现高端智能传感器产业规模倍增。 《措施》还提出建设高质量中文数据集、加快算法产品供给、建设大模型开源社区等,系统构建算法产业矩阵,并提出多项行动目标。鼓励企业建设面向行业的高质量中文语料数据库,推动典型行业数据汇集、共享和使用。到2027年,建设50个以上高质量行业数据集。 支持研发自主可控的大模型产品,发布产品和服务目录。到2027年,打造具有示范推广效应的100个算法产品。到2027年,基本建成一站式研究、开发、协作、...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G