新闻详情

新闻详情

首页 / 资讯中心 / 详情

从 0 到 1 构建第一个 AI Agent:用 TaoToken 统一 Key 打通 LangChain 与 LangGraph 配置骨架

发布时间:2026/9/26 12:31:36来源:尧图网络
从 0 到 1 构建第一个 AI Agent:用 TaoToken 统一 Key 打通 LangChain 与 LangGraph 配置骨架
1. 为什么第一个 Agent 总是卡在配置这一步很多人第一次搭 AI Agent卡住的地方不是 LangChain 的 API 记不住也不是 LangGraph 的状态图看不懂而是配置环节就翻车了。模型名写错、base_url 少个斜杠、Key 散落在三四个文件里、环境变量没加载、跑起来报 401 或者 model not found折腾一晚上连一句回复都没拿到。我自己刚开始也是这样一个项目里同时用了 OpenAI 兼容接口、本地 Ollama、还有某个云厂商的 SDK每个地方都要填一遍 Key 和地址改一次要翻五个文件。后来我把所有模型调用统一收敛到一个 API 通道上用 TaoToken 做统一 Key 管理配置只写一次LangChain 和 LangGraph 共用同一份 settings.json 和 config.toml整个链路才真正跑通。这篇就是把这个过程完整拆给你从零基础视角用 TaoToken 统一 Key 打通 LangChain 与 LangGraph交付可以直接复制的 settings.json 与 config.toml 骨架再带你做一次连通性验证确认第一个 Agent 调用链路真的通了。适合刚接触 AI Agent、想跑通第一个可运行 Demo 的开发者不需要你之前用过 LangGraph。核心检索词先明确AI Agent 是能自主规划、调用工具、维护记忆的系统LangChain 负责模型适配和工具编排LangGraph 负责状态图和记忆TaoToken 在这里扮演的是统一 API 通道和 Key 管理入口让上面这些组件不用各自维护一套凭证。2. TaoToken 前置准备拿到统一 Key 和 API 地址在写任何配置文件之前先把凭证准备好。TaoToken 的官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基础地址是 https://taotoken.net/api 注意这个地址后面不加任何 UTM 参数配置里就写这个干净的。你需要做两件事注册账号然后在控制台创建一个 API Key。创建 Key 的入口在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 进去之后找到 API Keys 页面新建一个 Key复制出来。这个 Key 就是后面所有配置里唯一要填的凭证。注意Key 只在创建时完整显示一次复制后立刻存到本地环境变量或密码管理器里不要直接写进会提交到 Git 的代码。如果你后面要长期跑编码类 Agent或者想让 Agent 在多个会话里持续工作可以了解一下 Coding Plan入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。它解决的是长期编码和 Agent 场景下的额度与通道问题和本篇的配置骨架是配套的。拿到 Key 之后先做一次最小验证确认这个 Key 和 API 地址是通的。用 curl 直接打一次模型对话接口export TAOTOKEN_API_KEY你的Key curl https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [{role: user, content: 只回复两个字通了}] }如果返回里能看到content: 通了之类的字段说明 Key 和通道没问题可以进入配置环节。如果报 401检查 Key 有没有复制完整如果报 model not found说明模型名要换成你账号下可用的模型具体可用模型列表可以在模型对话页面确认https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。3. 可复制配置settings.json 与 config.toml 骨架配置的核心思路是把「凭证」和「模型参数」分离凭证走环境变量模型参数走配置文件。这样 LangChain 和 LangGraph 读同一份配置改模型只改一处。先建项目目录结构mkdir my-first-agent cd my-first-agent mkdir -p config src touch config/settings.json config/config.toml .env3.1 settings.json给 LangChain 用的模型配置config/settings.json负责描述模型适配器参数LangChain 的ChatOpenAI直接读它{ llm: { provider: openai-compatible, model: gpt-4o-mini, base_url: https://taotoken.net/api/v1, api_key_env: TAOTOKEN_API_KEY, temperature: 0.7, timeout: 60, max_retries: 2 }, agent: { system_prompt: 你是一个友好的AI助手用简洁易懂的语言回答用户问题。, max_iterations: 8 } }这里几个字段值得说明base_url指向 TaoToken 的 API 地址加/v1这是 OpenAI 兼容协议的标准路径api_key_env写的是环境变量名而不是 Key 本身代码里用os.getenv读避免硬编码max_retries设 2 次网络抖动时能自动重试。3.2 config.toml给 LangGraph 和运行时用的配置config/config.toml负责 LangGraph 的状态图参数和运行时行为[graph] checkpointer memory thread_prefix user_ recursion_limit 25 [memory] type short_term max_messages 20 [logging] level INFO log_tool_calls true [model] settings_file config/settings.jsoncheckpointer memory表示用内存检查点适合本地开发recursion_limit控制状态图最大步数防止 Agent 陷入循环max_messages限制短期记忆保留的对话轮数避免上下文无限增长导致 token 成本失控。3.3 .env唯一放 Key 的地方TAOTOKEN_API_KEY你的Key.env必须加进.gitignoreecho .env .gitignore3.4 加载配置的 Python 骨架src/config_loader.py把两份配置读进来供 LangChain 和 LangGraph 共用import json import os import tomllib from pathlib import Path from dotenv import load_dotenv load_dotenv() def load_settings(pathconfig/settings.json): with open(path, r, encodingutf-8) as f: return json.load(f) def load_runtime_config(pathconfig/config.toml): with open(path, rb) as f: return tomllib.load(f) def build_llm(): from langchain_openai import ChatOpenAI settings load_settings() llm_cfg settings[llm] api_key os.getenv(llm_cfg[api_key_env]) if not api_key: raise RuntimeError(f环境变量 {llm_cfg[api_key_env]} 未设置) return ChatOpenAI( modelllm_cfg[model], temperaturellm_cfg[temperature], api_keyapi_key, base_urlllm_cfg[base_url], timeoutllm_cfg[timeout], max_retriesllm_cfg[max_retries], )注意base_url参数名新版 langchain-openai 用的是base_url老版本是openai_api_base如果你装的是旧版会报参数错误升级到langchain-openai0.2即可。4. 验证请求跑通第一个 Agent 调用链路配置写完先验证模型能通再验证 Agent 能跑。4.1 验证模型连通src/check_llm.pyfrom config_loader import build_llm llm build_llm() resp llm.invoke(只回复两个字通了) print(模型返回, resp.content)运行pip install langchain-openai python-dotenv python src/check_llm.py看到「模型返回通了」就说明 LangChain 通过 TaoToken 通道调通了。4.2 验证 Agent 带工具调用src/first_agent.pyfrom datetime import datetime from langchain_core.tools import tool from langchain.agents import create_agent from config_loader import build_llm, load_settings tool def get_current_time(): 返回当前的日期和时间。当用户询问现在几点、今天日期、当前时间时调用此工具。 return datetime.now().strftime(%Y-%m-%d %H:%M:%S) tool def calculator(expression: str): 计算数学表达式。输入应该是字符串形式的数学表达式如 23*4。 try: result eval(expression, {__builtins__: {}}, {}) return f计算结果{expression} {result} except Exception as e: return f计算失败{str(e)} settings load_settings() agent create_agent( modelbuild_llm(), tools[get_current_time, calculator], system_promptsettings[agent][system_prompt], ) result agent.invoke({messages: [{role: user, content: 现在几点顺便算一下 12*85}]}) print(result[messages][-1].content)运行后应该能看到 Agent 先调用get_current_time再调用calculator最后整合成一句回答。这一步跑通说明「模型 工具 统一 Key」这条链路完整了。4.3 验证 LangGraph 短期记忆src/graph_agent.pyfrom typing import TypedDict, Annotated from langgraph.checkpoint.memory import InMemorySaver from langgraph.graph import StateGraph, END from langgraph.graph.message import add_messages from first_agent import agent class AgentState(TypedDict): messages: Annotated[list, add_messages] def run_agent(state: AgentState): result agent.invoke({messages: state[messages]}) return {messages: [result[messages][-1]]} graph StateGraph(AgentState) graph.add_node(agent, run_agent) graph.set_entry_point(agent) graph.add_edge(agent, END) checkpointer InMemorySaver() app graph.compile(checkpointercheckpointer) config {configurable: {thread_id: user_123}} app.invoke({messages: [{role: user, content: 我叫张三}]}, config) out app.invoke({messages: [{role: user, content: 我叫什么名字}]}, config) print(out[messages][-1].content)如果第二次调用能答出「你叫张三」说明thread_id和 checkpointer 生效短期记忆通了。同一个thread_id代表同一个会话换用户就换thread_id。5. 本篇常见错排查配置环节的报错基本集中在下面几类对照排查能省很多时间。报错信息常见原因处理方式401 UnauthorizedKey 没读到或复制不全检查.env是否被load_dotenv加载echo $TAOTOKEN_API_KEY确认model not found模型名不在账号可用列表到模型对话页面确认可用模型名Connection errorbase_url 写错确认是https://taotoken.net/api/v1不要漏/v1TypeError: unexpected keywordlangchain-openai 版本旧升级到 0.2 以上或改用openai_api_baseAgent 不调用工具工具 docstring 描述不清把「什么时候调用」写进 docstring记忆不生效thread_id 每次不同同一会话固定同一个 thread_id递归超限状态图陷入循环调低recursion_limit或检查工具返回提示如果 Agent 反复调用同一个工具停不下来先看工具的返回值是不是空或者异常模型拿不到有效结果会一直重试。还有一个容易忽略的点config.toml用tomllib读取时必须以二进制模式打开rb用文本模式会报TypeError。Python 3.11 以下没有内置tomllib需要pip install tomli并改导入。6. 下一步把配置骨架用起来配置骨架跑通之后你手上就有了一个可复用的底座模型参数在settings.json运行时行为在config.toml凭证在.envLangChain 和 LangGraph 读同一份配置。后面加工具、加记忆、换模型都只改配置不改调用代码。如果你要接着做更复杂的编排建议先把接入文档过一遍确认参数和路径细节https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 。Key 管理和新建入口在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 需要多环境隔离时可以建多个 Key 分别给开发和生产用。想先直观感受一下模型对话效果可以直接在 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里试确认模型行为符合预期再写进 Agent。长期跑编码类 Agent 的话Coding Plan 的入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 和本篇的配置骨架配合使用即可。最后留一个我踩过的坑settings.json里的base_url千万别写成带 UTM 参数的完整链接配置里只写干净的 API 地址参数是给浏览器和统计用的写进代码只会让请求路径出错。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

raylib实战深度解析:C语言游戏开发的跨平台底层原理与避坑指南 2026/9/26 14:35:19

raylib实战深度解析:C语言游戏开发的跨平台底层原理与避坑指南

1. 这不是一本“说明书”,而是一份十年C语言游戏开发者的实战手记如果你在搜索引擎里输入“raylib 入门”,大概率会看到一堆零散的API列表、几行hello world代码,再配上“轻量”“易上手”这类空泛形容词——但没人告诉你:为什么一…

阅读更多 →
手持式频谱仪与信号源一体机:从现场操作到SCPI自动化开发指南 2026/9/26 14:35:19

手持式频谱仪与信号源一体机:从现场操作到SCPI自动化开发指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
北理工2020数据结构C++实战资源:手写ADT+可运行代码+真题验证 2026/9/26 14:35:19

北理工2020数据结构C++实战资源:手写ADT+可运行代码+真题验证

简介:本资源是北京理工大学2020年《数据结构》课程的完整学习套件,面向C编程初学者及计算机专业本科生,系统解决数据结构理论理解、代码实现与应试复习三大核心需求。压缩包共65个文件,涵盖29个C源码(含股票撮合、迷宫…

阅读更多 →
Agent Harness系列(二):上下文管理的4种策略与TaoToken配置实战 2026/9/26 14:35:19

Agent Harness系列(二):上下文管理的4种策略与TaoToken配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
工业级机载WiFi6 AP实测:5GHz全频段组网与移动链路部署指南 2026/9/26 14:35:19

工业级机载WiFi6 AP实测:5GHz全频段组网与移动链路部署指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
【AI】Agent Skills 入门:用 TaoToken 统一 Key 跑通 SKILL.md 配置 2026/9/26 14:35:13

【AI】Agent Skills 入门:用 TaoToken 统一 Key 跑通 SKILL.md 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉