langchain-openai 实战从第一次调用到生产接入 OpenAI 的完整指南【免费下载链接】langchainThe agent engineering platform.项目地址: https://gitcode.com/GitHub_Trending/la/langchainlangchain-openai 实战的核心就是把 OpenAI 官方 SDK 的能力包装成 LangChain 的标准接口。这个包让 ChatOpenAI、OpenAIEmbeddings 等模型对象能直接参与 Runnable 链、Agent 和检索工作流覆盖聊天补全、工具调用、结构化输出与向量化。langchain-openai 实战的目标很简单几分钟内跑通第一次调用并知道什么时候该切到 Azure 或本地兼容服务。 装好它跑通第一次调用这一节解决从零到能跑。装包、配密钥、发第一条消息三步走通就停先不碰工程化配置。pip install -U langchain-openai export OPENAI_API_KEYsk-你的密钥密钥未显式传入时会自动读取环境变量OPENAI_API_KEY。最小示例from langchain_openai import ChatOpenAI model ChatOpenAI(modelgpt-4.1-mini, temperature0) print(model.invoke(用一句话介绍 LangChain).content)运行后你会得到一段模型生成的中文说明文本说明整条链路已经打通。 最常用的三个场景按使用频率排下面三个场景覆盖了绝大多数日常调用。1. 拿到能直接解析的结构化输出当你要把模型回答转成固定字段存库、前端渲染、下游逻辑判断时用它比手写 JSON 提示词稳得多。from pydantic import BaseModel, Field class Joke(BaseModel): setup: str Field(description笑话铺垫) punchline: str Field(description笑点) jokes model.with_structured_output(Joke) print(jokes.invoke(讲个关于猫的笑话))运行后你会得到一个Joke对象setup和punchline是分好的字段可直接.setup取值。⚠️ 坑模型偶尔返回空字段。字段最好加int | None这类可空类型别假设一定有值。2. 让模型调用你定义的工具当对话里需要模型去查数据、算数、执行动作时用bind_tools把函数暴露给模型。from pydantic import BaseModel, Field class GetWeather(BaseModel): 获取某地当前天气 location: str m model.bind_tools([GetWeather]) print(m.invoke(洛杉矶今天天气如何).tool_calls)运行后你会得到tool_calls列表里面是模型想调用的工具名、参数和调用id由你的代码执行后回传。⚠️ 坑tool_calls只是模型想调用真正执行并回填结果的责任在你别期待它自动跑完。3. 把文本变成向量入库做检索增强RAG时需要先把文档和查询都转向量。OpenAIEmbeddings是标准入口。from langchain_openai import OpenAIEmbeddings emb OpenAIEmbeddings(modeltext-embedding-3-large) print(len(emb.embed_query(你好世界))) # 1536运行后你会得到一个长度为 1536 的浮点向量可直接写入向量库。⚠️ 坑默认模型是text-embedding-ada-0021536 维换text-embedding-3系列后才能用dimensions指定输出维度。 你的服务放在哪官方 / 云厂商 / 本地兼容选型只需看一张表差异全在初始化参数。三种渠道共用同一套invoke调用只有构造时的参数不同。渠道关键参数典型值OpenAI 官方model 环境变量OPENAI_API_KEYmodelgpt-4.1-miniAzure 云厂商azure_deploymentapi_version 环境变量AZURE_OPENAI_API_KEY/AZURE_OPENAI_ENDPOINTAzureChatOpenAI(azure_deploymentmy-chat, api_version2024-05-01-preview)本地 / 兼容服务base_url 任意api_keyChatOpenAI(base_urlhttp://localhost:1234/v1, modelQwQ-32B)Azure 走的是 REST API 版本号api_version和模型版本不是一回事本地服务只面向官方 API 规范第三方加的非标准字段不会被保留。 进阶能力按需取用三个最有辨识度的能力用到哪个取哪个。流式 用量统计。长回答边出边收同时拿到 token 用量用于前端打字机和成本核算for chunk in model.stream(介绍一下大模型, stream_usageTrue): print(chunk.text, end)会话续接Responses API。让服务端替你保管上下文用上一响应的id续接省得每次重传历史r1 model.invoke(你好我叫 Bob。) r2 model.invoke(我叫什么, previous_response_idr1.response_metadata[id]) print(r2.content)自定义参数透传。对接 vLLM、LM Studio 等兼容服务时非标准参数要走extra_body别用model_kwargs否则 API 直接报错m ChatOpenAI(base_urlhttp://localhost:8000/v1, api_keyEMPTY, modelmeta-llama/Llama-2-7b-chat-hf, extra_body{use_beam_search: True, best_of: 4})️ 报错速查与核心参数下表把最常见的报错对应到原因和处理办法命中即可直接下手。现象原因处理认证失败密钥缺失或错误检查OPENAI_API_KEY是否导出上下文溢出输入超过模型窗口截断/分块输入或换长窗口模型限流触发频率上限调max_retries退避重试连接/超时网络或服务端慢设timeout确认base_url可达模型不存在模型名拼错或无权限核对model名称与组织权限核心参数速查覆盖最常调的几项参数默认说明model无模型名如gpt-4.1-minitemperatureNone采样温度max_retriesNone最大重试次数base_url读OPENAI_API_BASE/OPENAI_BASE_URL代理/兼容服务地址stream_usage官方端点默认开流式时是否返回用量use_responses_api按模型名推断是否走 Responses API 通道extra_bodyNone兼容服务的自定义参数dimensionsEmbeddingsNone向量维度仅text-embedding-3起支持完整字段定义见 chat_models 源码 与 embeddings 源码。记住两点base_url只用于换端点参数透传分清model_kwargs与extra_body报错先查上表再动代码。装好、跑通、按场景取用就够你从 Demo 走到生产了。【免费下载链接】langchainThe agent engineering platform.项目地址: https://gitcode.com/GitHub_Trending/la/langchain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?