> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aihubmix.com/llms.txt
> Use this file to discover all available pages before exploring further.

# LangChain

> 用 LangChain 接入 AIHubMix：通过 OpenAI 兼容接口在 Python / JS 代码中调用模型，构建 AI 应用与 Agent。

LangChain 是目前应用最广泛的大语言模型应用开发框架之一。本文档介绍如何在 LangChain 项目中接入AIHubMix，涵盖凭据配置、模型切换、检索增强生成（RAG）场景实践与生产环境建议。

## 环境准备

接入 AIHubMix 前，需满足以下条件：

* Python 版本不低于 3.9
* 已安装 LangChain 及其 OpenAI 集成包或者下载：[https://www.langchain.com/](https://www.langchain.com/)：

```text theme={null}
pip install langchain langchain-openai openai
```

* 已在 [aihubmix.com](http://aihubmix.com) 完成账号注册，并在控制台创建 API 凭据（以 `sk-` 开头的字符串）

### 最简单的配置方式：直接设置环境变量代码如下

```text theme={null}
API_SECRET_KEY = "sk-pvMtoVO******66249058b93C766F2D70167"
BASE_URL = "https://aihubmix.com/v1"; #aihubmix的base-url

os.environ["OPENAI_API_KEY"] = API_SECRET_KEY
os.environ["OPENAI_BASE_URL"] = BASE_URL
```

注意：openai\_api\_base 的末尾要加上 /v1，

```from langchain.chat_models import ChatOpenAI theme={null}

llm = ChatOpenAI(
    openai_api_base="https://aihubmix.com/v1", # 注意，末尾要加 /v1
    openai_api_key="sk-3133f******fee269b71d",
)

res = llm.predict("hello")

print(res)
```

示例代码，使用LLM进行预测\
核心其实在于key和url的设置\
方法有：

1. 使用环境变量来设置
2. 使用变量来传入
3. 使用手动设置环境变量

```py Python theme={null}
import os
import requests
import time
import json
import time

from langchain.llms import OpenAI

API_SECRET_KEY = "你在aihubmix的key";
BASE_URL = "https://aihubmix.com/v1"; #aihubmix的base-url

os.environ["OPENAI_API_KEY"] = API_SECRET_KEY
os.environ["OPENAI_API_BASE"] = BASE_URL

def text():
    llm = OpenAI(temperature=0.9)
    text = "What would be a good company name for a company that makes colorful socks?"
    print(llm(text))

if __name__ == '__main__':
    text();
    
```

运行后可以看到返回：

```text theme={null}
Lively Socks.
```

## 检索增强生成（RAG）场景实践

LangChain 在 RAG 应用中通常涉及两类调用：向量化（Embedding）与生成（Chat Completion）。由于向量化调用频次远高于生成调用，但单次成本远低于生成，因此在成本敏感的生产场景中，可通过混搭策略显著降低总体支出。

AIHubMix 的统一入口设计使该策略实现成本极低：

```text theme={null}
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA

embeddings = OpenAIEmbeddings(
    model="text-embedding-3-small",
    openai_api_base="https://aihubmix.com/v1",
    openai_api_key="sk-xxx",
)

llm = ChatOpenAI(
    model="claude-sonnet-4-6",
    openai_api_base="https://aihubmix.com/v1",
    openai_api_key="sk-xxx",
)

vectorstore = FAISS.from_documents(documents, embeddings)
qa = RetrievalQA.from_chain_type(llm=llm, retriever=vectorstore.as_retriever())

response = qa.invoke("公司年报中第三季度营收数据是多少？")
print(response)
```

上述代码使用 `text-embedding-3-small` 处理向量化、`claude-sonnet-4-6` 处理最终生成。

***

## LangChain 0.1 之后的导入路径变更

自 LangChain 0.1 版本起，官方将 OpenAI 集成拆分至独立包 `langchain-openai`。旧版导入路径虽仍可运行，但已被标记为弃用（deprecated），并在每次导入时输出告警。

```text theme={null}
# 弃用写法
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI

# 推荐写法
from langchain_openai import ChatOpenAI, OpenAI, OpenAIEmbeddings
```

新项目应直接采用新版导入路径；存量项目建议在常规升级窗口内迁移完成。

***

## 生产环境实践建议

将 LangChain 应用部署至生产环境时，以下三项配套实践与 AiHubMix 协同效果良好。

### 成本可观测性

LangChain 提供 `get_openai_callback` 上下文管理器，可实时统计每次调用的 token 用量与费用。结合 AiHubMix 控制台的账单明细，可在代码层与平台层形成双向核对：

```text theme={null}
from langchain_community.callbacks import get_openai_callback

with get_openai_callback() as cb:
    response = llm.invoke("hello")
    print(f"消耗 tokens: {cb.total_tokens}, 估算费用: ${cb.total_cost}")
```

### 多模型容错

任何单一上游均可能出现短时不可用。LangChain 的 `with_fallbacks` 方法支持声明降级链路，确保关键业务的可用性：

```text theme={null}
primary  = ChatOpenAI(model="claude-opus-4-7", openai_api_base="https://aihubmix.com/v1")
fallback = ChatOpenAI(model="gpt-5.5",         openai_api_base="https://aihubmix.com/v1")

llm = primary.with_fallbacks([fallback])
```

### 配置外部化

模型选型与端点地址在生产环境中属于高频调整项。建议将其抽离至环境变量或配置中心，避免因调整模型而触发代码发布流程：

```text theme={null}
llm = ChatOpenAI(
    model=os.getenv("LLM_MODEL", "claude-sonnet-4-6"),
    openai_api_base=os.getenv("LLM_BASE_URL", "https://aihubmix.com/v1"),
)
```

***

## 常见问题

**端点返回 404 Not Found**\
通常由 `OPENAI_BASE_URL` 缺失 `/v1` 后缀引起。请确认配置值为 `https://aihubmix.com/v1`。

**返回 401 Unauthorized**\
请依次确认 API 凭据是否完整复制、AIHubMix 账户余额是否充足、凭据是否已在控制台启用。

**LangGraph 与 LangSmith 是否兼容**\
完全兼容。LangGraph 的节点底层仍调用 `ChatOpenAI`，配置方式一致；LangSmith 作为观测平台，独立于上游模型链路，不受影响。

***

## 参考资源

* AIHubMix 官网：[aihubmix.com](https://aihubmix.com/)
* LangChain 官网：[langchain.com](https://www.langchain.com/)
* LangChain Python 文档：[python.langchain.com](https://python.langchain.com/)

***

更新时间：2026-06-01
