LangChain
https://gyazo.com/82275023cd8048d52a5ca0c2a5dea114
なくていいっしょ派だけど text_splitter とかは使いたい、一度触っておく
community
QuickStart
page_content, metadata
ここの stuff は詰める staff やね
コンポーネント
LLMs
ChatModels
callbacks に渡す、標準出力に出すだけやろと思うがフィルタが色々ある
description に書いた説明がプロンプトに使われる? 例を見たい → たぶんこれ parser.get_format_instructions()
Document Loaders
epub も pandoc で markdown にして Header で割ったほうがいいような wikipedia, Vertex AI Search, Elasticsearch 等もここ
ユーザ入力(質問)から LLM に検索すべき単語を取り出したり言い換えをやらせる
Chains
debug
code:debug.py
from langchain.globals import set_debug, set_verbose
set_debug(True)
set_verbose(True)
ほかに globals にあるのはキャッシュぐらい
これも大抵書いてる
code:logging.py
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, force=True)
hub
プロンプトやチェーンの共有
code:pull.py
from langchain import hub
hub.pull(...)
Gemini
code:llm.py
import vertexai
vertexai.init(project="pokutuna-playground", location="asia-northeast1")
from langchain.llms import VertexAI
llm = VertexAI(model_name="gemini-pro", temperature=0)
llm("What is BigQuery?")
これだけだと嬉しさないが
Loader
Directory Loader と組み合わせる
ヘッダ無い時とかどういう感じになるのかな?
なんか使いづれえな
isa TextSplitter じゃないし
一旦無視
epub 読みたい
vectorstore に metadata も保存するには? / 検索時に指定するには?
community なのかそうじゃないのか
from langchain.vectorstores import LanceDB
from langchain_community.vectorstores import LanceDB
どっちやねん
はい...
community のほうがコードジャンプも効く
はよリリースしろや、いつまで Gemini 1.5 使わせないねん
embed_query / embed_document でちゃんと Task 切り替えてるのは当然だけど偉いね期待に届いているよ
| で繋いでいくやつ何?
LCEL
Runnable が実体
| は Python の __or__ 呼び出しになっている / 右から作用する __ror__ のいずれかが呼ばれて DSL になっている
へーとなるものの、まあこういう型になってダルいやろな
コンポーネントごとに入出力の型がきまってる input_schema / output_schema
ためになる
RunnableLambda / RunnableGenerator
| で繋いだ結果できるのが RunnableSequence
dict をつなぐとキーごとの Runnable をくっつけた RunnablePararell になる
chain.get_graph().print_ascii() で AA で可視化できる
RunnablePassthrough.assign(mult=lambda x: x["num"] * 3) で値を追加
OutputParser
使い方いろいろすぎないか
output_parser.get_format_instructions() すると csv で出力してねという文言がプロンプトに入る...素朴
英語でいいのか問題
Chainlit
Need type annotation for "chain" 言われたら
Runnbale か RunnableSerializable かなあ
code:annotation_for_chain.py
from langchain_core.runnables import Runnable
chain: Runnable = {"question": RunnablePassthrough()} | ...