
Python の Error にしばらく悩まされていた事がすっと解決した [langchain]
Langchain でいろいろと遊んでいたんですが、急に手詰まりしました。
こんなエラーが出よるんです。
Traceback (most recent call last):
File "/Users/sho/working/python/work/testing-langchain/./wikipedia.py", line 6, in <module>
retriever = WikipediaRetriever()
^^^^^^^^^^^^^^^^^^^^
File "/Users/sho/.local/share/mise/installs/python/3.12.1/lib/python3.12/site-packages/langchain_core/load/serializable.py", line 120, in __init__
super().__init__(**kwargs)
File "/Users/sho/.local/share/mise/installs/python/3.12.1/lib/python3.12/site-packages/pydantic/v1/main.py", line 339, in __init__
values, fields_set, validation_error = validate_model(__pydantic_self__.__class__, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/sho/.local/share/mise/installs/python/3.12.1/lib/python3.12/site-packages/pydantic/v1/main.py", line 1100, in validate_model
values = validator(cls_, values)
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/sho/.local/share/mise/installs/python/3.12.1/lib/python3.12/site-packages/langchain_community/utilities/wikipedia.py", line 33, in validate_environment
import wikipedia
File "/Users/sho/working/python/work/testing-langchain/wikipedia.py", line 6, in <module>
retriever = WikipediaRetriever()
^^^^^^^^^^^^^^^^^^^^
File "/Users/sho/.local/share/mise/installs/python/3.12.1/lib/python3.12/site-packages/langchain_core/load/serializable.py", line 120, in __init__
super().__init__(**kwargs)
File "/Users/sho/.local/share/mise/installs/python/3.12.1/lib/python3.12/site-packages/pydantic/v1/main.py", line 339, in __init__
values, fields_set, validation_error = validate_model(__pydantic_self__.__class__, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/sho/.local/share/mise/installs/python/3.12.1/lib/python3.12/site-packages/pydantic/v1/main.py", line 1100, in validate_model
values = validator(cls_, values)
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/sho/.local/share/mise/installs/python/3.12.1/lib/python3.12/site-packages/langchain_community/utilities/wikipedia.py", line 35, in validate_environment
wikipedia.set_lang(values["lang"])
^^^^^^^^^^^^^^^^^^
AttributeError: partially initialized module 'wikipedia' has no attribute 'set_lang' (most likely due to a circular import)
なんだろなぁ、特定のモジュールの呼び方が間違っているのかなぁ、なんて `WikipediaRetriever()` 付近をずーっと眺めていたんです。
よく見たら、エラーは一番最後の行に出てました。AttributeError です。ようやく気がつきました。ぇぇ…。
で、このサイトを見てピンと来たわけです。
'wikipedia.py' ってファイル名じゃん…。
という事で、ようやく動くようになりました。いったんここまでできました。Wikipedia の情報を拾ってこられるようになりました。
レイによって、langchain → langchain_community へ変更しています。なお、LangChain 完全入門 の 135ページのコードです。コマンドライン引数からクエリを検索できるようにしました。
import sys
# from langchain.retrievers import WikipediaRetriever
from langchain_community.retrievers import WikipediaRetriever
retriever = WikipediaRetriever(lang="ja")
query = sys.argv
if len(query) < 2:
print("キーワードを指定してください")
exit()
documents = retriever.get_relevant_documents(query=query[1])
print(f"ドキュメントの数: {len(documents)}件")
for document in documents:
print(f"--- 取得したメタデータ ---")
print(document.metadata)
print(f"--- 取得したテキスト ---")
print(document.page_content[:100])
ちなみに、これを実行するとこんな感じになります。
python ./query_wikipedia.py Perfume
ドキュメントの数: 3件
--- 取得したメタデータ ---
{'title': 'Perfume', 'summary': 'Perfume(パフューム)は、日本の音楽ユニット。中田ヤスタカが楽曲プロデュースする広島県出身の3人組テクノポップユニットである。\n\n女性アイドルグループとしては相当に長い下積みを経て、2007年から2008年にかけてブレイク。以降も長く人気を保つ女性アイドルグループである。独特の音楽性やダンス 、舞台演出等に特徴がある。\nアミューズ所属。レコードレーベルはPerfume Records。公式ファンクラブは「P.T.A.」。', 'source': 'https://ja.wikipedia.org/wiki/Perfume'}
--- 取得したテキスト ---
Perfume(パフューム)は、日本の音楽ユニット。中田ヤスタカが楽曲プロデュースする広島県出身の3人組テクノポップユニットである。
女性アイドルグループとしては相当に長い下積みを経て、2007年か
--- 取得したメタデータ ---
{'title': 'Perfume LOCKS!', 'summary': '『Perfume LOCKS!』(パフューム・ロックス)は、2008年3月31日から2021年3月22日まで、TOKYO FMのラジオ番組『SCHOOL OF LOCK!』(以下、SOL)内で放送されていたコーナーである。', 'source': 'https://ja.wikipedia.org/wiki/Perfume_LOCKS!'}
--- 取得したテキスト ---
『Perfume LOCKS!』(パフューム・ロックス)は、2008年3月31日から2021年3月22日まで、TOKYO FMのラジオ番組『SCHOOL OF LOCK!』(以下、SOL)内で放送され
--- 取得したメタデータ ---
{'title': 'GAME (Perfumeのアルバム)', 'summary': '『GAME』(ゲーム)は、日本のテクノポップユニット・Perfumeの通算2枚目、初のオリジナル・アルバムである。収録曲「GAME」をアルバムタイトルとした。\n読売新聞2018年の元旦特集「J-POP 平成の名盤30」で本アルバムが、宇多田ヒカル『First Love』や、globe『globe』などを抑えて実質1位に選ばれた(選者・マーティ・フリードマン、柴那典、石黒大貴の3人が30枚を選び、全員一致で挙げた唯一のアルバム) 。平成を代表する名盤である。\n本項では、本作の 初回限定盤に付属のDVDに収録されたライブ『Perfume 〜SEVENTH HEAVEN イイ気分♪〜』についても記述する。', 'source': 'https://ja.wikipedia.org/wiki/GAME_(Perfume%E3%81%AE%E3%82%A2%E3%83%AB%E3%83%90%E3%83%A0)'}
--- 取得したテキスト ---
『GAME』(ゲーム)は、日本のテクノポップユニット・Perfumeの通算2枚目、初のオリジナル・アルバムである。収録曲「GAME」をアルバムタイトルとした。
読売新聞2018年の元旦特集「J-POP
いいなと思ったら応援しよう!
