diff --git a/08_langgraph_basics/01_workflow.png b/08_langgraph_basics/01_workflow.png index 5fc9720..1394b48 100644 Binary files a/08_langgraph_basics/01_workflow.png and b/08_langgraph_basics/01_workflow.png differ diff --git a/08_langgraph_basics/02_langsmith_trace.py b/08_langgraph_basics/02_langsmith_trace.py index 9dd9e92..45ef369 100644 --- a/08_langgraph_basics/02_langsmith_trace.py +++ b/08_langgraph_basics/02_langsmith_trace.py @@ -1,19 +1,11 @@ -# pip install --pre -U langchain langchain-openai -from dotenv import load_dotenv -import os - - -load_dotenv() -langchain_api_key = os.getenv("LANGCHAIN_API_KEY") - - +from config import OPENAI_API_KEY,LANGCHAIN_API_KEY from typing import TypedDict from langgraph.graph import StateGraph,END,START - +import os os.environ["LANGCHAIN_TRACING_V2"] = "true" # 总开关,决定启用追踪功能 os.environ["LANGCHAIN_PROJECT"] = "my_demo" # 自定义项目名 -os.environ["LANGCHAIN_API_KEY"] = langchain_api_key +os.environ["LANGCHAIN_API_KEY"] = LANGCHAIN_API_KEY # 1. 定义State(状态) -- 白板上只有一个字段"count" diff --git a/08_langgraph_basics/03_conditional_router.py b/08_langgraph_basics/03_conditional_router.py index 007d970..a835e31 100644 --- a/08_langgraph_basics/03_conditional_router.py +++ b/08_langgraph_basics/03_conditional_router.py @@ -1,24 +1,19 @@ -from dotenv import load_dotenv -import os - -load_dotenv() -api_key = os.getenv("OPENAI_API_KEY") -langchain_api_key = os.getenv("LANGCHAIN_API_KEY") - -from langchain.schema import HumanMessage +from config import OPENAI_API_KEY,LANGCHAIN_API_KEY +from langchain_core.messages import HumanMessage from langchain.tools import tool from langchain_openai import ChatOpenAI from langgraph.graph import StateGraph, MessagesState, END,START from langgraph.prebuilt import ToolNode +import os os.environ["LANGCHAIN_TRACING_V2"] = "true" # 总开关,决定启用追踪功能 os.environ["LANGCHAIN_PROJECT"] = "demo01" # 自定义项目名 -os.environ["LANGCHAIN_API_KEY"] = langchain_api_key +os.environ["LANGCHAIN_API_KEY"] = LANGCHAIN_API_KEY # LLM配置 llm = ChatOpenAI( model="deepseek-chat", - api_key=api_key, + api_key=OPENAI_API_KEY, base_url="https://api.deepseek.com" ) diff --git a/08_langgraph_basics/04_agent_with_memory.py b/08_langgraph_basics/04_agent_with_memory.py index 309bdca..101e09f 100644 --- a/08_langgraph_basics/04_agent_with_memory.py +++ b/08_langgraph_basics/04_agent_with_memory.py @@ -1,11 +1,6 @@ -from dotenv import load_dotenv import os - -load_dotenv() -api_key = os.getenv("OPENAI_API_KEY") -langchain_api_key = os.getenv("LANGCHAIN_API_KEY") - -from langchain.schema import HumanMessage +from config import OPENAI_API_KEY,LANGCHAIN_API_KEY +from langchain_core.messages import HumanMessage from langchain.tools import tool from langchain_openai import ChatOpenAI from langgraph.graph import StateGraph, MessagesState, END,START @@ -15,12 +10,12 @@ from langgraph.checkpoint.memory import MemorySaver os.environ["LANGCHAIN_TRACING_V2"] = "true" # 总开关,决定启用追踪功能 os.environ["LANGCHAIN_PROJECT"] = "demo02" # 自定义项目名 -os.environ["LANGCHAIN_API_KEY"] = langchain_api_key +os.environ["LANGCHAIN_API_KEY"] = LANGCHAIN_API_KEY # LLM配置 llm = ChatOpenAI( model="deepseek-chat", - api_key=api_key, + api_key=OPENAI_API_KEY, base_url="https://api.deepseek.com" ) diff --git a/08_langgraph_basics/README.md b/08_langgraph_basics/README.md index 835478a..e146982 100644 --- a/08_langgraph_basics/README.md +++ b/08_langgraph_basics/README.md @@ -97,5 +97,7 @@ --- ### 💡 **建议** - -先运行 `01` 和 `02` 理解 LangGraph 底层机制,再重点掌握 `03` 和 `04` —— 它们构成了后续所有进阶 Agent(多工具、人工干预、自定义状态等)的**标准范式**。 \ No newline at end of file +- 尝试扩展 `04_agent_with_memory.py`,添加更多自定义工具(如RAG检索工具) +- 实验不同的条件路由逻辑,实现更复杂的Agent决策路径 +- 使用LangSmith深入分析和优化Agent的推理过程 +- 尝试实现多Agent协作系统,通过LangGraph连接多个专业化Agent \ No newline at end of file diff --git a/config.py b/config.py index 6bcf72e..e5023bf 100644 --- a/config.py +++ b/config.py @@ -19,6 +19,8 @@ LANGCHAIN_API_KEY = os.getenv("LANGCHAIN_API_KEY") if not OPENAI_API_KEY: raise ValueError("× 请在.env中设置OPENAI_API_KEY") +if not LANGCHAIN_API_KEY: + raise ValueError("× 请在.env中设置LANGCHAIN_API_KEY")