Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

Hugging FaceのモデルをLangChainで使う(メモ書き)

Posted at

SageMakerのインスタンスタイプml.g4dn.2xlarge

sagemaker-user@default:~$
conda init
source ~/.bashrc 
conda create --name langchain-hf -y
conda activate langchain-hf
conda install pip ipykernel ipywidgets -y
export CURRENT_ENV_NAME=$(conda info | grep "active environment" | cut -d : -f 2 | tr -d ' ')
python3 -m ipykernel install --user --name $CURRENT_ENV_NAME --display-name "user-env:($CURRENT_ENV_NAME)"

ブラウザをリロード

ここからはノートブックで実行します。

%conda install -y accelerate pytorch transformers huggingface_hub pytorch-cuda=12.4 -c pytorch -c nvidia
%pip install langchain langchain-huggingface
from huggingface_hub import login
login()

ログイン画面が表示されるのでトークンを入力します。

import torch
from langchain_huggingface.llms import HuggingFacePipeline

llm = HuggingFacePipeline.from_model_id(
    model_id="google/gemma-2-2b-jpn-it",
    task="text-generation",
    pipeline_kwargs={"max_new_tokens": 2048},
    model_kwargs={"torch_dtype": torch.bfloat16},
    device=0, # -1 for CPU
)
llm.invoke("日本について知っていることを教えて下さい。")

'日本について知っていることを教えて下さい。\n\n基本的な情報\n\n* 国名: 日本\n* 首都: 東京\n* 国旗: 赤と白の旗\n* 国土: 約377,975平方キロメートル\n* 人口: 約1億2,400万人\n* 言語: 日本語\n* 通貨: 日本円\n\n歴史・文化\n\n* 歴史: 古代から近代まで、長い歴史を持つ\n* 文化: 伝統的な文化、芸術、音楽、食文化など、多様性と奥深さがある\n* 伝統文化: 茶道、書道、歌舞伎など、世界的に有名な伝統文化がある\n* 芸術: 日本の芸術は、絵画、彫刻、陶芸など、世界的に高い評価を得ている\n\n経済・社会\n\n* 経済: 世界第3位の経済規模を持つ\n* 社会: 高度な社会制度を持つ\n* 教育: 世界トップレベルの教育制度を持つ\n\n自然\n\n* 自然: 山、海、湖など、豊かな自然環境を持つ\n* 気候: 四季折々の気候\n* 観光地: 富士山、京都、大阪など、世界的に有名な観光地がある\n\n\n \n\n\n \n'

チャットモデルの場合

chat = ChatHuggingFace(llm=llm)
chat.invoke("日本について知っていることを教えて下さい。")

AIMessage(content='user\n日本について知っていることを教えて下さい。\nmodel\n## 日本について知りたいこと、教えてください!😊\n\n日本について、どんなことを知りたいですか?\n\n例えば…\n\n歴史・文化方面:\n\n* 日本の歴史について知りたい\n* 日本の伝統文化について知りたい\n* 日本の芸術や文化について知りたい\n* 日本の伝統芸能について知りたい\n* 日本の宗教について知りたい\n\n地理・自然方面:\n\n* 日本の地理について知りたい\n* 日本の気候について知りたい\n* 日本の自然景観について知りたい\n* 日本の山岳地帯について知りたい\n* 日本の海について知りたい\n\n経済・社会方面:\n\n* 日本の経済について知りたい\n* 日本の社会制度について知りたい\n* 日本の教育制度について知りたい\n* 日本の生活習慣について知りたい\n* 日本の政治について知りたい\n\nその他:\n\n* 日本のアニメや漫画について知りたい\n* 日本の食べ物について知りたい\n* 日本のファッションについて知りたい\n* 日本の音楽について知りたい\n* 日本の映画について知りたい\n\n\n\n \n \n \n\n\n \n', additional_kwargs={}, response_metadata={}, id='run-6a563ad3-7e87-4a8c-92dc-6a8d9f50ae62-0')

トークンの区切り文字を取り除くにはskip_prompt=Trueを指定します。

chat2 = chat.bind(skip_prompt=True)
chat2.invoke("日本について知っていることを教えて下さい。")

AIMessage(content='## 日本について知りたいこと、教えてください!😊\n\n日本について、どんなことを知りたいですか?\n\n例えば…\n\n歴史・文化方面:\n\n* 日本の歴史について知りたい\n* 日本の伝統文化について知りたい\n* 日本の芸術や文化について知りたい\n* 日本の伝統芸能について知りたい\n* 日本の宗教について知りたい\n\n地理・自然方面:\n\n* 日本の地理について知りたい\n* 日本の気候について知りたい\n* 日本の自然景観について知りたい\n* 日本の山岳地帯について知りたい\n* 日本の海について知りたい\n\n経済・社会方面:\n\n* 日本の経済について知りたい\n* 日本の社会制度について知りたい\n* 日本の教育制度について知りたい\n* 日本の生活習慣について知りたい\n* 日本の政治について知りたい\n\nその他:\n\n* 日本のアニメや漫画について知りたい\n* 日本の食べ物について知りたい\n* 日本のファッションについて知りたい\n* 日本の音楽について知りたい\n* 日本の映画について知りたい\n\n\n\n \n \n \n\n\n \n', additional_kwargs={}, response_metadata={}, id='run-cbb7c55f-ab4c-4805-9d7f-a33532a10630-0')

Streamingは動作するのですが、1つのチャンクになってしまいました。モデルによるのかたまたまなのかは確認できていません。

for chunk in chat2.stream("日本の文化や歴史について長文で回答してください。"):
    print(chunk)

content='## 日本の文化と歴史:複雑で多様な魅力\n\n日本の文化と歴史は、長い歴史と多様な文化要素によって、世界的に知られている複雑で魅力的なものです。その歴史は、古代から現代まで、様々な時代と文化が交錯し、独自の文化を形成してきました。\n\n古代から中世:神道と仏教の融合\n\n* 古代: 日本は紀元前5世紀から、独自の文化を形成し始めました。稲作の普及と、独自の宗教体系である神道が発展しました。神道は自然と人間の関係を重視し、神々を祭祀する儀式や信仰が中心でした。\n* 中世: 7世紀に仏教が日本に伝来し、仏教文化が発展しました。仏教は、日本社会に大きな影響を与え、寺院や仏像、禅宗などの文化が発展しました。\n* 平安時代: 平安時代は、政治的安定と文化の繁栄の時代でした。貴族社会が中心となり、芸術、文学、建築など、様々な分野で優れた作品が生まれた時代です。\n\n江戸時代:武士と文化の成熟\n\n* 江戸時代: 戦国時代から続く武士社会が中心となり、武士の文化が発展しました。武士の倫理観や武道の精神が社会に根付いていました。同時に、茶道、書道、歌道などの文化が発展しました。\n* 江戸幕府の時代: 江戸幕府の時代は、日本社会の安定と発展の時代でした。文化的な交流が活発になり、新しい芸術や技術が生まれてきました。\n\n明治維新から現代:近代化と文化の多様性\n\n* 明治維新: 明治維新によって、日本は近代化の道を歩み始めました。新しい政治体制と経済システムが導入され、近代的な文化が導入されました。\n* 現代: 現代日本は、高度経済成長期を経て、世界的な経済力を持つ国となりました。一方で、伝統的な文化や宗教は、現代社会にも根強く存在し、多様な文化が融合しています。\n\n日本の文化の特徴\n\n* 伝統と現代の融合: 日本の文化は、伝統と現代の要素が複雑に融合したものです。伝統的な文化は、現代社会にも受け入れられ、現代の文化と融合しています。\n* 美意識と芸術性: 日本の文化は、芸術性と美意識に特徴があります。伝統的な芸術や文化は、現代の芸術にも影響を与えています。\n* 宗教と信仰: 日本の文化には、神道、仏教、キリスト教など、様々な宗教が存在します。宗教は、日本の社会生活に深く根ざしています。\n* 伝統的な価値観: 日本の文化には、家族や社会の秩序、敬意、誠実さなどの伝統的な価値観があります。\n\n\n日本の文化と歴史は、複雑で多様な要素によって形成されています。その歴史は、日本人の精神性や価値観を反映しており、現代でもその影響は世界に広がっています。\n\n\n\n' additional_kwargs={} response_metadata={} id='run-c41e1803-fa80-4e6b-8596-70e3e5033c61-0'

ツールも試しましたが、うまくいきませんでした。

%pip install -qU duckduckgo-search langchain-community
from langchain_community.tools import DuckDuckGoSearchResults

search = DuckDuckGoSearchResults()

chat3 = chat2.bind_tools([search]).bind(skip_prompt=True)
chat3.invoke("Webで Amazon を検索してください")

AIMessage(content='申し訳ありませんが、私はウェブブラウザを操作できません。 \n\n代わりに、Amazonのウェブサイトにアクセスするためのリンクを以下に示します。\n\nhttps://www.amazon.co.jp/ \n\n\n\n', additional_kwargs={}, response_metadata={}, id='run-520848a0-0414-4c91-a072-7684c5d2f522-0')

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?