LangGraph SDK详解:Python开发者集成API的完整手册
【免费下载链接】langgraph 项目地址: https://gitcode.com/GitHub_Trending/la/langgraph
概述
LangGraph SDK是LangGraph平台提供的官方Python客户端库,专门用于与LangGraph API进行高效交互。它为开发者提供了简洁、类型安全的接口来管理AI助手(Assistant)、会话线程(Thread)、运行任务(Run)等核心资源,是构建智能应用和AI工作流的关键工具。
核心特性
| 特性 | 描述 | 优势 |
|---|---|---|
| 异步/同步支持 | 同时提供异步和同步客户端 | 适应不同应用场景 |
| 类型安全 | 完整的Pydantic模型定义 | 减少运行时错误 |
| 自动重试 | 内置HTTP请求重试机制 | 提升网络稳定性 |
| 流式处理 | 支持Server-Sent Events (SSE) | 实时数据流处理 |
| 环境感知 | 自动检测API密钥和服务器地址 | 简化配置流程 |
安装与配置
安装SDK
pip install -U langgraph-sdk
环境配置
SDK支持多种API密钥配置方式,按优先级排序:
- 显式参数传递
LANGGRAPH_API_KEY环境变量LANGSMITH_API_KEY环境变量LANGCHAIN_API_KEY环境变量
import os
os.environ["LANGGRAPH_API_KEY"] = "your-api-key-here"
核心组件架构
基础使用示例
初始化客户端
from langgraph_sdk import get_client, get_sync_client
# 异步客户端(推荐)
async_client = get_client(url="http://localhost:8123")
# 同步客户端
sync_client = get_sync_client(url="http://localhost:8123")
助手管理
# 创建助手
assistant = await async_client.assistants.create(
graph_id="agent",
config={"temperature": 0.7},
name="Weather Assistant",
description="Provides weather information"
)
# 获取助手详情
assistant_details = await async_client.assistants.get(assistant["assistant_id"])
# 搜索助手
all_assistants = await async_client.assistants.search()
会话线程操作
# 创建新会话线程
thread = await async_client.threads.create()
# 获取线程状态
thread_info = await async_client.threads.get(thread["thread_id"])
运行任务处理
# 启动运行任务
input_data = {
"messages": [{
"role": "human",
"content": "What's the weather in San Francisco?"
}]
}
run = await async_client.runs.create(
thread_id=thread["thread_id"],
assistant_id=assistant["assistant_id"],
input=input_data
)
流式响应处理
# 流式运行(实时获取响应)
async for chunk in async_client.runs.stream(
thread_id=thread["thread_id"],
assistant_id=assistant["assistant_id"],
input=input_data
):
print(chunk) # 实时处理响应片段
高级功能详解
1. 配置管理
# 复杂配置示例
config = {
"model": "gpt-4",
"temperature": 0.7,
"max_tokens": 1000,
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
}
]
}
assistant = await async_client.assistants.create(
graph_id="advanced_agent",
config=config,
name="Advanced Weather Agent"
)
2. 元数据管理
# 添加自定义元数据
metadata = {
"created_by": "admin",
"environment": "production",
"version": "1.2.0",
"tags": ["weather", "api", "production"]
}
assistant = await async_client.assistants.create(
graph_id="agent",
metadata=metadata,
name="Production Weather Agent"
)
3. 错误处理与重试
import httpx
from langgraph_sdk import get_client
async def robust_operation():
client = get_client(
url="http://localhost:8123",
timeout=httpx.Timeout(connect=10, read=60, write=60, pool=10)
)
try:
# 操作会自动重试
assistants = await client.assistants.search()
return assistants
except httpx.HTTPStatusError as e:
print(f"HTTP错误: {e}")
# 处理特定错误码
if e.response.status_code == 404:
print("资源未找到")
elif e.response.status_code == 401:
print("认证失败")
raise
最佳实践
1. 连接池管理
from contextlib import asynccontextmanager
@asynccontextmanager
async def get_langgraph_client():
"""上下文管理器确保正确关闭连接"""
client = get_client(url="http://localhost:8123")
try:
yield client
finally:
await client.aclose()
# 使用示例
async with get_langgraph_client() as client:
assistants = await client.assistants.search()
2. 性能优化
# 批量操作减少HTTP请求
async def batch_create_assistants(configs):
results = []
for config in configs:
assistant = await client.assistants.create(
graph_id=config["graph_id"],
config=config["settings"],
name=config["name"]
)
results.append(assistant)
return results
# 使用asyncio.gather并行处理
async def parallel_operations():
tasks = [
client.assistants.search(),
client.threads.search(),
client.runs.search()
]
results = await asyncio.gather(*tasks)
return results
3. 监控与日志
import logging
from langgraph_sdk import get_client
# 配置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
class MonitoredLangGraphClient:
def __init__(self):
self.client = get_client()
self.request_count = 0
async def monitored_get(self, path, **kwargs):
self.request_count += 1
logger.info(f"Request #{self.request_count}: {path}")
start_time = time.time()
try:
result = await self.client.http.get(path, **kwargs)
duration = time.time() - start_time
logger.info(f"Request completed in {duration:.2f}s")
return result
except Exception as e:
logger.error(f"Request failed: {e}")
raise
常见问题排查
连接问题
# 检查连接状态
async def check_connection():
try:
client = get_client(timeout=5.0)
# 简单ping操作测试连接
await client.assistants.search(limit=1)
return True
except (httpx.ConnectError, httpx.TimeoutException):
return False
except Exception as e:
print(f"其他错误: {e}")
return False
认证问题
# API密钥验证
def validate_api_key(api_key):
if not api_key or len(api_key) < 20:
raise ValueError("无效的API密钥")
# 简单的格式检查
if not api_key.startswith("lg-"):
print("警告: API密钥格式可能不正确")
return True
版本兼容性
| SDK版本 | LangGraph API版本 | Python版本 | 主要特性 |
|---|---|---|---|
| 0.2.x | ≥ 0.0.45 | ≥ 3.9 | 完整功能支持 |
| 0.1.x | ≥ 0.0.40 | ≥ 3.8 | 基础功能 |
总结
LangGraph SDK为Python开发者提供了强大而灵活的工具来构建和管理AI应用。通过类型安全的接口、自动重试机制和流式处理支持,开发者可以专注于业务逻辑而不是底层通信细节。
关键优势:
- 开发效率:简洁的API设计减少样板代码
- 可靠性:内置错误处理和重试机制
- 性能:异步支持和连接池优化
- 可扩展性:模块化设计支持复杂应用场景
无论是构建简单的聊天机器人还是复杂的多智能体系统,LangGraph SDK都能提供稳定可靠的基础设施支持。
【免费下载链接】langgraph 项目地址: https://gitcode.com/GitHub_Trending/la/langgraph
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



