# LangChain

Source: https://aiand-docs-staging.pages.dev/ja/integrations/langchain/

LangChain は `ChatOpenAI` を介して ai& と接続できます — ai& のベース URL を指定するだけで、既存のチェーン・エージェント・グラフがそのまま動作します。

## セットアップ

```bash
pip install langchain langchain-openai
```

```python
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="google/gemma-4-31b-it",
    base_url="https://api.aiand.com/v1",
    api_key="sk-your-api-key",
)

print(llm.invoke("Hello").content)
```

## チェーン内での利用

```python
from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_messages([
    ("system", "Translate the user's input to {language}."),
    ("user", "{text}"),
])

chain = prompt | llm

print(chain.invoke({"language": "Japanese", "text": "Hello, world!"}).content)
```

## ツール付き

```python
from langchain_core.tools import tool

@tool
def get_weather(city: str) -> str:
    """Get current weather for a city."""
    return f"Sunny in {city}, 22°C"

llm_with_tools = llm.bind_tools([get_weather])
response = llm_with_tools.invoke("What's the weather in Tokyo?")
print(response.tool_calls)
```

## LangGraph

`ChatOpenAI` をラップした LangGraph ノードは同じ要領で動作します — ai& 固有の設定はありません。詳細は [LangGraph ドキュメント](https://langchain-ai.github.io/langgraph/) を参照。

<Aside type="tip">
  ストリーミングは `llm.stream(...)` または `chain.stream(...)` で利用できます。コストとリクエスト ID の trailer イベントは内部レスポンスヘッダから取得できます — [ストリーミングイベント](/ja/reference/streaming-events/) を参照。
</Aside>
