Qiitaで紹介したコードを基本に追加したり減らしたりしているサンプルコード。
ネット上に落ちているコードやChatGPTが出力するコードが非推奨コードも多いので、ここにサンプルを置いておく。
2025年3月の最新langchain=0.3.20でWARNINGが出ないコードたち。
uv sync
.env
の作成
GOOGLE_API_KEY="Google AI Studioから取得したAPIキー"
# 以下はオプション
LANGSMITH_TRACING=true
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_API_KEY="LANGSMITHのAPIキー"
LANGSMITH_PROJECT="llm-learn"
- VerteAIのGeminiを使いたい場合は、
ChatGoogleGenerativeAI
をChatVertexAI
に置き換える必要がある - LangSmithを使う場合に
input
(標準入力)を併用するとフリーズするようです
- 基礎
uv run python src/basic.py
- ストリーム出力
uv run python src/stream.py
- デバッグ用出力(ConsoleCallbackHandler)
uv run python src/debug.py
- 構造化出力(StructuredOutputParser) with ResponseSchema, PromptTemplate
uv run python src/structured.py
- 構造化出力失敗時の自動修正(OutputFixingParser)
uv run python src/autofix.py
- リトライ(with_retry)
uv run python src/retry.py
- より複雑な構造化出力(PydanticOutputParser, with_structured_output) with BaseModel, Field
uv run python src/pydantic_out.py
- FewShotプロンプト(FewShotPromptTemplate)
uv run python src/fewshot.py
- 直列に複数のLLMをつなぐ with StrOutputParser
uv run python src/chain.py
- 並列に複数のLLMをつなぐ(RunnableParallel) with RunnableLambda
uv run python src/chain_parallel.py
- LangGraph(StateGraph)
uv run python src/graph.py
- 関数呼び出し(create_react_agent)
uv run python src/func_call.py
- 会話履歴の記憶(自前実装) with AIMessage, HumanMessage, SystemMessage
uv run python src/memory_custom.py
- 会話履歴の記憶(RunnableWithMessageHistory) with ChatPromptTemplate
uv run python src/history.py
- 会話履歴の記憶(MemorySaver)
uv run python src/saver.py
- 会話履歴の要約(ConversationSummaryMemory)
uv run python src/summary.py
- 近似近傍探索
uv run python src/ann.py
- RAG
uv run python src/rag.py
- MCP
uv run python src/mcp_playwright.py
- thinkingモデルの思考を止める
uv run python src/nothinking.py
- マルチAI対話
uv run python sample/multichat.py
- マルチAI対話でChatPromptTemplateを使うとAIMessageが2連続の場合に空のレスポンスでエラーになる
uv run python sample/multichat_error.py
- OpenRouterを使う
- OpenRouterからAPIキーを取得し、
.env
にOPENROUTER_API_KEY="APIキー"
を記載 uv run python sample/openrouter.py
- OpenRouterからAPIキーを取得し、
- Groqを使う
- GroqからAPIキーを取得し、
.env
にGROQ_API_KEY="APIキー"
を記載 uv run python sample/groq.py
- GroqからAPIキーを取得し、
- プロンプト改善Human In the Loop
uv run python sample/prompt_improve.py
- FakeListLLMを使ってLLMをモックする
- 構造化出力のテスト
uv run pytest test/test_structure.py
- FakeMessagesListChatModelを使ってLLMをモックする
- トークン情報の取り出しのテスト
uv run pytest test/test_metadata.py
langchain.jsも触ってみた
npm install
.env
の作成
GOOGLE_API_KEY="Google AI Studioから取得したAPIキー"
- 基礎
node js/basic.js
- 構造化出力
node js/structured.js
- 直列に複数のLLMをつなぐ
node js/chain.js
- 並列に複数のLLMをつなぐ
node js/chain_parallel.js
- LangGraph
node js/graph.js