精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

告別上下文溢出!用DeepAgents+DeepSeek快速構建具備網絡搜索能力的AI研究助手 原創

發布于 2025-10-29 07:27
瀏覽
0收藏

概述

在人工智能快速發展的今天,構建智能代理系統已成為開發者關注的焦點。DeepAgents 作為 LangChain 生態系統中的重要組成部分,為開發者提供了一個強大而易用的代理工具包。本文將從概念理解到代碼實踐,全面解析 DeepAgents 的技術特性與應用場景。

DeepAgents 核心概念

DeepAgents 是由 LangChain 團隊開發的開源 Python 工具包,專門用于構建能夠處理復雜任務的智能 AI 代理。它基于 LangGraph 構建,并受到 Claude Code、Deep Research 和 Manus 等先進應用程序的啟發,為開發者提供了一套完整的代理構建解決方案。

四大核心能力

1. 智能規劃與任務分解 DeepAgents 內置 ??write_todos?? 工具,使代理能夠:

  • 將復雜任務分解為離散的執行步驟
  • 實時跟蹤任務執行進度
  • 根據新信息動態調整執行計劃

2. 高效上下文管理 通過文件系統工具集(??ls???、??read_file???、??write_file???、??edit_file??),代理可以:

  • 將大型上下文信息卸載到外部存儲
  • 有效防止上下文窗口溢出問題
  • 處理可變長度的工具執行結果

3. 子代理生成機制 內置的 ??task?? 工具支持:

  • 生成專門化的子代理處理特定任務
  • 實現上下文隔離,保持主代理環境整潔
  • 深入執行復雜的子任務流程

4. 長期記憶能力 利用 LangGraph 的 Store 功能:

  • 為代理擴展跨線程持久內存
  • 保存和檢索歷史對話信息
  • 支持多會話間的知識共享

與 LangChain 生態系統的關系

DeepAgents 在 LangChain 生態系統中扮演著重要角色,它與其他組件形成了完整的技術棧:

核心依賴關系:

  • LangGraph:提供底層圖形執行引擎和狀態管理機制
  • LangChain:提供工具集成和模型抽象,與 DeepAgents 無縫協作
  • LangSmith:通過 LangGraph 平臺實現系統可觀察性和生產部署

技術架構定位:DeepAgents、LangChain 和 LangGraph

為了更好地理解這三個組件的關系,我們可以將它們類比為不同層次的技術解決方案:

  • LangChain:代理框架層 - 提供標準化的開發抽象
  • LangGraph:代理運行時層 - 負責底層執行和狀態管理
  • DeepAgents:代理工具包層 - 提供開箱即用的完整解決方案

告別上下文溢出!用DeepAgents+DeepSeek快速構建具備網絡搜索能力的AI研究助手-AI.x社區

DeepAgents 技術架構圖

DeepAgents 在技術架構中的定位關系

LangGraph:代理運行時層

LangGraph 作為代理運行時,專注于提供底層的圖形執行引擎和狀態管理能力。

核心職責: 當您需要在生產環境中運行代理時,需要可靠的代理運行時支持。LangGraph 提供了完整的基礎設施層面考慮:

  • 持久化執行:支持長時間運行的代理任務
  • 流式傳輸支持:實時數據流處理能力
  • 人機交互支持:支持人工干預和監督
  • 線程級持久化:單個會話內的狀態保持
  • 跨線程持久化:多會話間的數據共享

技術定位: LangGraph 的設計理念借鑒了 Temporal、Inngest 等持久執行引擎,專注于為代理框架提供可靠的底層運行時支持。

LangChain:代理框架層

LangChain 作為代理框架,主要價值在于提供標準化的開發抽象。

核心價值:

  • 抽象化設計:將復雜的 LLM 交互抽象為易用的接口
  • 標準化開發:提供統一的應用構建方法
  • 簡化入門:降低開發者的學習和使用門檻
  • 項目遷移:支持開發人員在不同項目間輕松遷移

設計理念: 優秀的抽象應該簡化復雜性而不是增加復雜性。LangChain 1.0 構建于 LangGraph 之上,充分利用其代理運行時能力,為開發者提供更高層次的開發體驗。

DeepAgents:代理工具包層

DeepAgents 是 LangChain 團隊的最新項目,它比代理框架更高層次——直接構建于 LangChain 之上。

獨特優勢:

  • 預設提示詞:內置優化的提示詞模板
  • 工具調用處理:自定義的工具調用邏輯
  • 規劃工具集:內置任務規劃和分解能力
  • 文件系統訪問:完整的文件操作支持
  • 開箱即用:自帶"電池"的完整解決方案

產品定位: DeepAgents 可以理解為"通用版的 Claude Code"。它不僅僅是一個框架,而是一個完整的代理工具包,為開發者提供了構建復雜代理系統的所有必要組件。

三者詳細對比

Agent Frameworks(代理框架)、Agent Runtimes(代理運行時) 和 Agent Harnesses(代理工具包) 的詳細對比

層級

代表工具/框架

中文解釋與價值點

典型使用場景

工具包層

 (Harness)

DeepAgents Claude Agent SDK

開箱即用的完整解決方案

 ? 預設提示詞和工具 ? 內置子代理生成 ? 完整的文件系統支持 ? 高度封裝,開發效率最高

快速原型開發

 ? 構建自主研究代理 ? 自動化報告生成 ? 復雜任務自動化 ? 需要快速上線的項目

框架層

 (Framework)

LangChain CrewAI Google ADK OpenAI Agents SDK LlamaIndex Vercel AI SDK

標準化開發抽象

 ? 統一的工具調用接口 ? 標準化的鏈式操作 ? 模塊化的組件設計 ? 便于團隊協作和維護

企業級應用開發

 ? 需要靈活組合的項目 ? 團隊協作開發 ? 自定義業務邏輯 ? 多模型集成場景

運行時層

 (Runtime)

LangGraph Temporal Inngest

生產級執行保障

 ? 持久化狀態管理 ? 斷點續跑機制 ? 流式輸出支持 ? 人機交互回路(HITL) ? 適合長時間、有狀態任務

生產環境部署

 ? 長時間運行的代理 ? 高可靠性要求 ? 復雜工作流編排 ? 需要監控和調試的系統

一句話總結:

  • Harness 像“整機”,拿來就用;
  • Framework 像“主板”,按需插拔;
  • Runtime 像“電源+冷卻”,保證任務不熄火。

快速入門

首先安裝必要的依賴包:

uv add deepagents tavily-python python-dotenv langchain-deepseek

在工程根目錄下創建 ??.env?? 文件,配置 API 密鑰:

DEEPSEEK_API_KEY=sk-xxx
TAVILY_API_KEY=tvly-dev-xxx

基礎示例:構建研究代理

以下代碼展示了如何使用 DeepAgents 結合 DeepSeek 和 Tavily 構建一個具備網絡搜索能力的研究代理:

import os
from typing import Literal
from tavily import TavilyClient
from deepagents import create_deep_agent
from langchain_deepseek import ChatDeepSeek

# 加載環境變量
from dotenv import load_dotenv
load_dotenv()

tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])

# 初始化 DeepSeek 模型
deepseek_model = ChatDeepSeek(
    model="deepseek-chat",  # 使用 DeepSeek-V3,支持工具調用和結構化輸出
    api_key=os.environ["DEEPSEEK_API_KEY"],
    temperature=0.1,
)

def internet_search(
    query: str,
    max_results: int = 5,
    topic: Literal["general", "news", "finance"] = "general",
    include_raw_content: bool = False,
):
    """Run a web search"""
    return tavily_client.search(
        query,
        max_results=max_results,
        include_raw_cnotallow=include_raw_content,
        topic=topic,
    )

# System prompt to steer the agent to be an expert researcher
research_instructions = """You are an expert researcher. Your job is to conduct thorough research and then write a polished report.

You have access to an internet search tool as your primary means of gathering information.

## `internet_search`

Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.
"""

agent = create_deep_agent(
    tools=[internet_search],
    system_prompt=research_instructions,
    model=deepseek_model  # 使用 DeepSeek 模型
)

result = agent.invoke({"messages": [{"role": "user", "content": "What is langgraph?"}]})

# Print the agent's response
print(result["messages"][-1].content)

運行結果

執行命令 ??uv run deepagents_samples.py??,可以看到代理成功調用了網絡搜索工具,并生成了關于 LangGraph 的詳細報告:

Based on my research, here's a comprehensive overview of what LangGraph is:

## What is LangGraph?

**LangGraph** is an open-source framework within the LangChain ecosystem designed for building **stateful, multi-actor applications** using Large Language Models (LLMs). It provides a structured approach to creating complex agent and multi-agent workflows with fine-grained control over both the flow and state of applications.

## Key Features and Capabilities

### 1. **State Management**
- Maintains persistent state across multiple agent interactions
- Enables agents to remember context and build upon previous interactions
- Supports complex, long-running workflows that require memory

### 2. **Multi-Agent Coordination**
- Orchestrates multiple AI agents working together
- Manages parallel execution of agents
- Coordinates information sharing between agents through centralized state

### 3. **Graph-Based Architecture**
- Models workflows as directed graphs where nodes represent agents or operations
- Supports conditional workflows that alter execution paths based on agent outputs
- Provides fine-grained control over workflow logic

### 4. **Human-in-the-Loop Integration**
- Allows human intervention and oversight in agent workflows
- Supports real-time monitoring and debugging
- Enables manual approval or modification of agent decisions

## Primary Use Cases

LangGraph is particularly well-suited for:

- **Complex multi-agent systems** where multiple specialized agents need to collaborate
- **Stateful applications** that require memory and context across interactions
- **Custom agent architectures** with unique logic and workflow requirements
- **Production-ready agent systems** that need reliability and monitoring
- **Task automation tools** with complex, conditional workflows

## Technical Foundation

- Built on top of LangChain's ecosystem
- Available in both Python and JavaScript
- Supports integration with various LLM providers
- Provides APIs and tools for deployment and monitoring
- Used by companies like GitLab, Elastic, Cisco, and Vodafone in production

## Why Use LangGraph?

LangGraph addresses the challenges of building sophisticated LLM applications by providing:
- **Structured coordination** of multiple agents
- **State persistence** across complex workflows
- **Fine-grained control** over agent behavior
- **Production-ready** deployment capabilities
- **Flexible architecture** for custom requirements

In essence, LangGraph moves beyond simple LLM integrations to enable the creation of truly sophisticated, stateful agent systems capable of handling complex, real-world tasks that require coordination, memory, and conditional logic

深入理解:添加日志追蹤

由于 DeepAgents 進行了高度封裝,為了更好地理解其內部工作機制,我們可以添加日志記錄來觀察模型的調用和執行過程:

import os
import logging
import json
from typing import Literal
from tavily import TavilyClient
from deepagents import create_deep_agent
from langchain_deepseek import ChatDeepSeek
from langchain_core.callbacks import BaseCallbackHandler
from langchain_core.messages import BaseMessage
from langchain_core.outputs import LLMResult

# 加載環境變量
from dotenv import load_dotenv
load_dotenv()

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('deepagents.log'),
        logging.StreamHandler()
    ]
)
logger = logging.getLogger(__name__)

# 自定義回調處理器來記錄模型交互
class DeepSeekLoggingCallback(BaseCallbackHandler):
    """自定義回調處理器,用于記錄 DeepSeek 模型的完整交互過程"""
    
    def on_llm_start(self, serialized, prompts, **kwargs):
        """記錄模型調用開始"""
        logger.info("=== DeepSeek 模型調用開始 ===")
        try:
            logger.info(f"序列化信息: {json.dumps(serialized, ensure_ascii=False, indent=2, default=str)}")
        except Exception as e:
            logger.info(f"序列化信息: {str(serialized)} (序列化失敗: {e})")
        for i, prompt in enumerate(prompts):
            logger.info(f"輸入提示 {i+1}: {prompt}")
        if kwargs:
            try:
                logger.info(f"額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2, default=str)}")
            except Exception as e:
                logger.info(f"額外參數: {str(kwargs)} (序列化失敗: {e})")
    
    def on_llm_end(self, response: LLMResult, **kwargs):
        """記錄模型調用結束"""
        logger.info("=== DeepSeek 模型調用結束 ===")
        for i, generation in enumerate(response.generations):
            for j, gen in enumerate(generation):
                output_text = gen.text
                logger.info(f"輸出結果 {i+1}-{j+1}: {output_text}")
                
                # 記錄生成信息(如果可用)
                if hasattr(gen, 'generation_info') and gen.generation_info:
                    try:
                        logger.info(f"生成信息 {i+1}-{j+1}: {json.dumps(gen.generation_info, ensure_ascii=False, indent=2, default=str)}")
                    except Exception as e:
                        logger.info(f"生成信息 {i+1}-{j+1}: {str(gen.generation_info)}")
        
        # 記錄使用的 token 數量(如果可用)
        if hasattr(response, 'llm_output') and response.llm_output:
            try:
                logger.info(f"LLM 輸出信息: {json.dumps(response.llm_output, ensure_ascii=False, indent=2, default=str)}")
            except Exception as e:
                logger.info(f"LLM 輸出信息: {str(response.llm_output)}")
        
        if kwargs:
            try:
                logger.info(f"額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2, default=str)}")
            except Exception as e:
                logger.info(f"額外參數: {str(kwargs)}")
    
    def on_llm_error(self, error, **kwargs):
        """LLM 出錯時調用"""
        logger.error(f"=== DeepSeek 模型調用出錯 ===")
        logger.error(f"錯誤信息: {str(error)}")
        logger.error(f"錯誤類型: {type(error).__name__}")
        if kwargs:
            logger.error(f"額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")
    
    def on_llm_new_token(self, token: str, **kwargs):
        """記錄新生成的 token"""
        logger.info(f"新生成 token: '{token}'")
        if kwargs:
            logger.info(f"Token 額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")
    
    def on_chain_start(self, serialized, inputs, **kwargs):
        """記錄鏈調用開始"""
        logger.info("=== 鏈調用開始 ===")
        logger.info(f"鏈序列化信息: {json.dumps(serialized, ensure_ascii=False, indent=2)}")
        logger.info(f"鏈輸入: {json.dumps(inputs, ensure_ascii=False, indent=2)}")
        if kwargs:
            logger.info(f"鏈額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")
    
    def on_chain_end(self, outputs, **kwargs):
        """記錄鏈調用結束"""
        logger.info("=== 鏈調用結束 ===")
        logger.info(f"鏈輸出: {json.dumps(outputs, ensure_ascii=False, indent=2)}")
        if kwargs:
            logger.info(f"鏈額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")
    
    def on_chain_error(self, error, **kwargs):
        """記錄鏈調用出錯"""
        logger.error(f"=== 鏈調用出錯 ===")
        logger.error(f"錯誤信息: {str(error)}")
        logger.error(f"錯誤類型: {type(error).__name__}")
        if kwargs:
            logger.error(f"鏈額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")
    
    def on_tool_start(self, serialized, input_str, **kwargs):
        """記錄工具調用開始"""
        logger.info("=== 工具調用開始 ===")
        logger.info(f"工具序列化信息: {json.dumps(serialized, ensure_ascii=False, indent=2)}")
        logger.info(f"工具輸入: {input_str}")
        if kwargs:
            logger.info(f"工具額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")
    
    def on_tool_end(self, output, **kwargs):
        """記錄工具調用結束"""
        logger.info("=== 工具調用結束 ===")
        logger.info(f"工具輸出: {output}")
        if kwargs:
            logger.info(f"工具額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")
    
    def on_tool_error(self, error, **kwargs):
        """記錄工具調用出錯"""
        logger.error(f"=== 工具調用出錯 ===")
        logger.error(f"錯誤信息: {str(error)}")
        logger.error(f"錯誤類型: {type(error).__name__}")
        if kwargs:
            logger.error(f"工具額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")
    
    def on_text(self, text, **kwargs):
        """記錄文本輸出"""
        logger.info(f"=== 文本輸出 ===")
        logger.info(f"文本內容: {text}")
        if kwargs:
            logger.info(f"文本額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")
    
    def on_retry(self, retry_state, **kwargs):
        """記錄重試"""
        logger.info(f"=== 重試操作 ===")
        logger.info(f"重試狀態: {retry_state}")
        if kwargs:
            logger.info(f"重試額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")
    
    def on_custom_event(self, name, data, **kwargs):
        """記錄自定義事件"""
        logger.info(f"=== 自定義事件: {name} ===")
        logger.info(f"事件數據: {json.dumps(data, ensure_ascii=False, indent=2)}")
        if kwargs:
            logger.info(f"事件額外參數: {json.dumps(kwargs, ensure_ascii=False, indent=2)}")

# 創建回調處理器實例
deepseek_callback = DeepSeekLoggingCallback()

tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])

# 初始化 DeepSeek 模型
logger.info("初始化 DeepSeek 模型...")
deepseek_model = ChatDeepSeek(
    model="deepseek-chat",  # 使用 DeepSeek-V3,支持工具調用和結構化輸出
    api_key=os.environ["DEEPSEEK_API_KEY"],
    temperature=0.1,
    callbacks=[deepseek_callback]  # 添加回調處理器
)
logger.info(f"DeepSeek 模型初始化完成: model=deepseek-chat, temperature=0.1")

def internet_search(
    query: str,
    max_results: int = 5,
    topic: Literal["general", "news", "finance"] = "general",
    include_raw_content: bool = False,
):
    """Run a web search"""
    logger.info("=== Tavily 網絡搜索開始 ===")
    logger.info(f"搜索參數:")
    logger.info(f"  - 查詢內容: '{query}'")
    logger.info(f"  - 最大結果數: {max_results}")
    logger.info(f"  - 搜索主題: '{topic}'")
    logger.info(f"  - 包含原始內容: {include_raw_content}")
    
    try:
        result = tavily_client.search(
            query,
            max_results=max_results,
            include_raw_cnotallow=include_raw_content,
            topic=topic,
        )
        
        logger.info("=== Tavily 網絡搜索結果 ===")
        results_count = len(result.get('results', []))
        logger.info(f"搜索完成,返回 {results_count} 個結果")
        
        # 記錄每個搜索結果的詳細信息
        for i, search_result in enumerate(result.get('results', []), 1):
            logger.info(f"結果 {i}:")
            logger.info(f"  - 標題: {search_result.get('title', 'N/A')}")
            logger.info(f"  - URL: {search_result.get('url', 'N/A')}")
            logger.info(f"  - 評分: {search_result.get('score', 'N/A')}")
            
            # 記錄內容摘要
            content = search_result.get('content', '')
            if content:
                logger.info(f"  - 內容摘要: {content}")
            else:
                logger.info(f"  - 內容摘要: 無內容")
            
            # 如果包含原始內容,也記錄完整內容
        if include_raw_content and'raw_content'in search_result:
            raw_content = search_result.get('raw_content', '')
            if raw_content:
                logger.info(f"  - 原始內容: {raw_content}")
            else:
                logger.info(f"  - 原始內容: 無原始內容")
        
        # 記錄搜索查詢信息(如果可用)
        if'query'in result:
            logger.info(f"實際執行的查詢: '{result['query']}'")
        
        logger.info("=== Tavily 網絡搜索完成 ===")
        return result
        
    except Exception as e:
        logger.error(f"=== Tavily 網絡搜索失敗 ===")
        logger.error(f"錯誤信息: {str(e)}")
        logger.error(f"搜索參數: query='{query}', max_results={max_results}, topic='{topic}'")
        raise

# System prompt to steer the agent to be an expert researcher
research_instructions = """You are an expert researcher. Your job is to conduct thorough research and then write a polished report.

You have access to an internet search tool as your primary means of gathering information.

## `internet_search`

Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.
"""

logger.info("=== 創建 DeepAgent ===")
agent = create_deep_agent(
    tools=[internet_search],
    system_prompt=research_instructions,
    model=deepseek_model  # 使用 DeepSeek 模型
)
logger.info("DeepAgent 創建完成")

user_query = "What is langgraph?"
logger.info(f"=== 開始執行用戶查詢 ===")
logger.info(f"用戶問題: '{user_query}'")

result = agent.invoke({"messages": [{"role": "user", "content": user_query}]})

logger.info("=== 用戶查詢執行完成 ===")
logger.info("=== Agent 最終響應 ===")

# 記錄完整的對話歷史
for i, message in enumerate(result["messages"]):
    role = message.role if hasattr(message, 'role') else getattr(message, 'type', 'unknown')
    content = message.content if hasattr(message, 'content') else str(message)
    
    logger.info(f"消息 {i+1} ({role}):")
    logger.info(f"  內容: {content}")

# Print the agent's response
final_response = result["messages"][-1].content
logger.info("=== 輸出最終結果給用戶 ===")
print("\n" + "="*50)
print("DeepAgent 響應:")
print("="*50)
print(final_response)
print("="*50)

可以看見完整調用過程,內容過長,不進行展示。其中 DeepAgents 添加的提示詞如下。

System: You are an expert researcher. Your job is to conduct thorough research and then write a polished report.

You have access to an internet search tool as your primary means of gathering information.

## `internet_search`

Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.


In order to complete the objective that the user asks of you, you have access to a number of standard tools.

## `write_todos`

You have access to the `write_todos` tool to help you manage and plan complex objectives.
Use this tool for complex objectives to ensure that you are tracking each necessary step and giving the user visibility into your progress.
This tool is very helpful for planning complex objectives, and for breaking down these larger complex objectives into smaller steps.

It is critical that you mark todos as completed as soon as you are done with a step. Do not batch up multiple steps before marking them as completed.
For simple objectives that only require a few steps, it is better to just complete the objective directly and NOT use this tool.
Writing todos takes time and tokens, use it when it is helpful for managing complex many-step problems! But not for simple few-step requests.

## Important To-Do List Usage Notes to Remember
- The `write_todos` tool should never be called multiple times in parallel.
- Don't be afraid to revise the To-Do list as you go. New information may reveal new tasks that need to be done, or old tasks that are irrelevant.

## Filesystem Tools `ls`, `read_file`, `write_file`, `edit_file`

You have access to a filesystem which you can interact with using these tools.
All file paths must start with a /.

- ls: list all files in the filesystem
- read_file: read a file from the filesystem
- write_file: write to a file in the filesystem
- edit_file: edit a file in the filesystem

## `task` (subagent spawner)

You have access to a `task` tool to launch short-lived subagents that handle isolated tasks. These agents are ephemeral — they live only for the duration of the task and return a single result.

When to use the task tool:
- When a task is complex and multi-step, and can be fully delegated in isolation
- When a task is independent of other tasks and can run in parallel
- When a task requires focused reasoning or heavy token/context usage that would bloat the orchestrator thread
- When sandboxing improves reliability (e.g. code execution, structured searches, data formatting)
- When you only care about the output of the subagent, and not the intermediate steps (ex. performing a lot of research and then returned a synthesized report, performing a series of computations or lookups to achieve a concise, relevant answer.)

Subagent lifecycle:
1. **Spawn** → Provide clear role, instructions, and expected output
2. **Run** → The subagent completes the task autonomously
3. **Return** → The subagent provides a single structured result
4. **Reconcile** → Incorporate or synthesize the result into the main thread

When NOT to use the task tool:
- If you need to see the intermediate reasoning or steps after the subagent has completed (the task tool hides them)
- If the task is trivial (a few tool calls or simple lookup)
- If delegating does not reduce token usage, complexity, or context switching
- If splitting would add latency without benefit

## Important Task Tool Usage Notes to Remember
- Whenever possible, parallelize the work that you do. This is true for both tool_calls, and for tasks. Whenever you have independent steps to complete - make tool_calls, or kick off tasks (subagents) in parallel to accomplish them faster. This saves time for the user, which is incredibly important.
- Remember to use the `task` tool to silo independent tasks within a multi-part objective.
- You should use the `task` tool whenever you have a complex task that will take multiple steps, and is independent from other tasks that the agent needs to complete. These agents are highly competent and efficient.
Human: What is langgraph?

總結

核心價值:

  • 開箱即用:DeepAgents 作為代理工具包,提供了完整的解決方案,大大降低了開發門檻
  • 高度集成:基于 LangGraph 運行時和 LangChain 框架,充分利用了成熟的生態系統
  • 靈活擴展:支持自定義工具和模型,滿足不同場景的需求

技術優勢:

  • 預設的提示詞和工具集合
  • 內置的子代理生成能力
  • 完整的文件系統操作支持
  • 與主流 LLM 提供商的無縫集成

適用場景:

  • 快速原型開發和概念驗證
  • 自動化研究和報告生成
  • 復雜任務的智能化處理
  • 需要快速上線的 AI 代理項目

DeepAgents 代表了 AI 代理開發的一個重要方向:通過高度封裝和標準化,讓開發者能夠專注于業務邏輯而非底層實現細節。隨著 AI 技術的不斷發展,這種"工具包"模式將在企業級應用中發揮越來越重要的作用。


本文轉載自??AI 博物院?? 作者:longyunfeigu

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2025-10-29 07:27:05修改
收藏
回復
舉報
回復
相關推薦
老牛影视一区二区三区| 国产传媒一区| 日韩欧美一区二区三区四区| 国产黄色录像片| 香蕉视频免费在线看| 日韩精品看片| 欧美性猛交xxxx乱大交蜜桃| 99热99热| 欧美国产精品一二三| 久久久加勒比| 国产精品无码永久免费888| 97精品一区二区视频在线观看| 26uuu国产| 黄色大片在线播放| 精品福利久久久| 欧美色图在线视频| 亚洲激情电影在线| 亚洲精品一区二区二区| 综合干狼人综合首页| 欧美色图在线视频| 免费在线精品视频| 久久国产视频一区| 一区二区美女| 日韩你懂的在线观看| 亚洲一区二区高清视频| 在线免费一区二区| 亚洲国产日本| 亚洲第一精品自拍| 久久亚洲中文字幕无码| 理论片中文字幕| 一本久久综合| 亚洲欧洲日产国码av系列天堂| 国产精品免费成人| 二区三区在线| 久久99国产精品尤物| 久久亚洲精品视频| 麻豆网站免费观看| 99久久精品免费看国产小宝寻花| 成人深夜在线观看| 51午夜精品视频| 日韩免费成人av| 四虎国产精品成人免费影视| 亚洲欧美日韩人成在线播放| 成人国产精品免费视频| 日韩黄色免费观看| 欧美成人精品一区二区三区在线看| 在线电影欧美成精品| 亚洲国产一二三精品无码| 亚洲欧美高清视频| 国产高清在线精品| 77777亚洲午夜久久多人| 久久久久久国产精品无码| 欧美日韩精品一区二区三区视频| 亚洲欧洲www| 国产久一道中文一区| 天堂中文字幕在线观看| 大色综合视频网站在线播放| 精品日韩一区二区| 欧在线一二三四区| 午夜影视一区二区三区| 国产精品乱码一区二区三区软件 | 青青草原av在线| 成人午夜精品在线| 国产91精品入口17c| 亚洲国产精品suv| 巨乳诱惑日韩免费av| 日本国产一区二区三区| 国产中文字幕久久| 红杏aⅴ成人免费视频| 欧美性色欧美a在线播放| 99热都是精品| 毛片在线网址| 精品久久久国产精品999| 制服国产精品| 青青色在线视频| 韩国av一区二区| 日本sm极度另类视频| 四虎精品永久在线| 日韩1区2区3区| 久久久久久久久电影| 天堂网av2018| 色哟哟精品丝袜一区二区| 91精品国产综合久久香蕉的特点| 极品美女扒开粉嫩小泬| 免费日韩电影| 亚洲国产精品一区二区www| 异国色恋浪漫潭| 日本一区视频| 国产精品无圣光一区二区| 青青草影院在线观看| 高清毛片在线观看| 亚洲品质自拍视频| 日韩精品一区在线视频| av在线下载| 国产精品久久久久久久久果冻传媒| 久久久一本精品99久久精品| 好吊色一区二区| 久久久久久久久免费| 国产日韩久久| 好吊视频一区二区三区| wwwwxxxxx欧美| 久久av免费一区| 日本视频在线播放| 国产精品丝袜91| 老司机午夜网站| 欧美电影免费观看网站| 欧美一区欧美二区| 九九热免费在线观看| 竹内纱里奈兽皇系列在线观看| 欧美性大战久久久久久久蜜臀| 国产伦理在线观看| 一区二区三区视频免费视频观看网站 | 欧美少妇一区| 青草久久伊人| 亚洲欧美另类在线| 福利网在线观看| 亚洲妇女成熟| 日韩三级视频在线观看| aaaaa黄色片| 波多野结衣在线播放一区| 久久免费在线观看| 久久草视频在线| 亚洲深夜福利| 日本高清视频精品| 国产成人精品白浆久久69| 国产一区二区三区在线观看精品| 成人有码视频在线播放| 毛片免费在线| 欧美国产国产综合| 浮妇高潮喷白浆视频| 看黄在线观看| 日本韩国欧美国产| 日本黄色福利视频| 精品日本12videosex| 欧美在线视频a| 国产成人手机在线| 亚洲一区成人在线| av动漫免费看| 久久免费资源| 亚洲乱码av中文一区二区| 91网站免费入口| 国产一区白浆| 久久爱av电影| 亚洲美女尤物影院| 日韩精品www| 日韩av网站在线播放| 日韩中文字幕区一区有砖一区 | 国产亚洲短视频| 亚洲视频sss| 91av一区| 日韩精品一区二区三区视频| 久久爱一区二区| 久久激情五月激情| 国产精品v欧美精品v日韩| 50度灰在线| 日韩欧美亚洲一二三区| 国产精品无码在线| 欧美激情777| 国产精品专区h在线观看| 精品国产亚洲一区二区麻豆| 91在线国产观看| 在线看视频不卡| 国产情侣一区在线| 亚洲精品一区中文| 免费在线观看h片| fc2ppv国产精品久久| 国产精品无码粉嫩小泬| 国产成人精品亚洲男人的天堂| 人妻有码中文字幕| 丝袜老师办公室里做好紧好爽| 久久久综合香蕉尹人综合网| 精品国产乱码久久久久软件 | 国产日韩一级二级三级| 欧美一区二区三区爽大粗免费 | 一区二区三区精品国产| 国产精品高清一区二区| 欧美高清电影在线看| 2021亚洲天堂| 成人精品在线视频观看| 国产黄色一级网站| 欧美一区二区麻豆红桃视频| 国产精品综合久久久| 一级黄色片毛片| 亚洲一区bb| 欧美色图另类小说| 乱码一区二区三区| 成人全视频在线观看在线播放高清| 亚洲视频综合网| 国产一区二区麻豆| 国产成人精品影院| 欧美午夜小视频| 精品久久网站| 99视频国产精品免费观看| 免费一级黄色录像| 九色丨蝌蚪丨成人| 日本精品视频在线| 韩国精品久久久999| 精品成人久久久| 久久久久成人黄色影片| 欧美在线a视频| 日韩精品2区| 99视频在线播放| 日日夜夜天天综合| 亚洲精品综合久久中文字幕| 在线观看免费中文字幕| 国产精品五月天| 国产香蕉精品视频| 国内揄拍国内精品久久| 亚洲一区二区久久久久久久| aⅴ在线视频男人的天堂 | 国产真实乱人偷精品视频| 国产一区二区三区在线看麻豆| 国产在线精品91| 亚洲无中文字幕| 亚洲综合小说区| 欧美日韩精品免费观看视欧美高清免费大片| 按摩亚洲人久久| 国产精品欧美亚洲| 国产精品国产自产拍高清av王其| 国产精品日日摸夜夜爽| 捆绑变态av一区二区三区| 18禁免费观看网站| 欧美在线日韩| 爱情岛论坛亚洲入口| 在线一区视频观看| 欧美在线视频网| 好吊日av在线| 日韩av在线不卡| 精品国产无码一区二区| 欧美另类videos死尸| 欧美亚洲另类小说| 亚洲色图另类专区| 亚洲av熟女国产一区二区性色| 91蝌蚪国产九色| 成人性生活免费看| 日韩高清在线电影| 免费毛片小视频| 亚洲精品国产日韩| 日本五级黄色片| 啄木系列成人av电影| 国产91色在线|亚洲| 看亚洲a级一级毛片| 97在线视频免费播放| 国产桃色电影在线播放| 欧美超级乱淫片喷水| 午夜精品一区二区三| 欧美日韩免费观看一区二区三区 | 热久久美女精品天天吊色| 91破解版在线观看| 午夜精品视频在线| 国产精品xx| 欧美自拍视频在线观看| 乡村艳史在线观看| 7m精品福利视频导航| 日韩欧美一中文字暮专区| 欧美亚洲日本网站| 少妇视频在线观看| 国产成人福利网站| 麻豆视频在线观看免费网站| 精品国产伦一区二区三区观看方式| 国产精品国产三级国产专区52| 国产精品白丝在线| 青青操在线视频观看| 亚洲久草在线视频| 久久亚洲国产成人精品性色| 亚洲国产精品传媒在线观看| 久久午夜福利电影| 国产精品的网站| 欧美爱爱小视频| 午夜在线成人av| 国产精品丝袜一区二区| 久久综合一区二区| 99精品999| 日本欧美韩国一区三区| 污污网站免费看| 国产情侣一区| 成年人黄色片视频| 久久精品999| 亚洲成人福利视频| 99国产一区二区三精品乱码| 无码一区二区三区在线| 成人午夜又粗又硬又大| 精品国产一区在线| 国产色产综合色产在线视频 | 亚洲精品成人在线| av网在线播放| 1区2区3区精品视频| 国产亚洲精品久久久久久无几年桃 | 欧美亚洲日本精品| 国产日韩一区在线| 吞精囗交69激情欧美| 国产精品午夜一区二区欲梦| 视频成人永久免费视频| 国产美女精品免费电影| 欧美成人精品午夜一区二区| 久久综合久久久| 国产一区福利| wwwxx欧美| av伊人久久| 大陆av在线播放| 红桃视频欧美| 牛夜精品久久久久久久| 亚洲欧美卡通另类91av| 精品无码一区二区三区在线| 日本不卡在线视频| 无码国产精品一区二区免费式直播 | 男女啪啪在线观看| 欧美在线视频网站| 视频二区欧美毛片免费观看| 日韩av一级大片| 在线成人www免费观看视频| 97av中文字幕| 视频一区二区国产| 中文字幕第3页| 亚洲日本青草视频在线怡红院| 一级片视频在线观看| 日韩欧美一级特黄在线播放| 成人午夜在线观看视频| 中文字幕亚洲欧美日韩在线不卡| 国内精品一区视频| 在线精品视频视频中文字幕| 午夜小视频在线| 91高清在线免费观看| 精品91福利视频| 亚洲国产日韩综合一区| 国产精品亚洲产品| 国产艳妇疯狂做爰视频 | 中国成人在线视频| 久久国产一二区| 美女黄色片视频| 麻豆专区一区二区三区四区五区| 日本少妇毛茸茸| 午夜精品久久久久久久99樱桃| 精品国产999久久久免费| 日韩中文在线视频| 四虎影视成人| …久久精品99久久香蕉国产| 一区二区日韩| 久久99久久久久久| 国产成人综合在线播放| 极品颜值美女露脸啪啪| 这里只有精品电影| 蜜芽在线免费观看| 国产一区视频在线| 97精品视频| 自拍偷拍一区二区三区四区| 欧美国产日本韩| 亚洲一区二区视频在线播放| 在线观看视频亚洲| 色综合久久久| 色爽爽爽爽爽爽爽爽| 国产精品99久久久| 麻豆国产尤物av尤物在线观看 | 国产69精品久久久久999小说| 国产福利精品一区二区| 亚洲成人生活片| 精品免费视频.| 国产精品探花在线| 国产一区在线免费观看| 国产美女一区| 性の欲びの女javhd| 欧美日韩在线一区二区| 懂色av蜜臀av粉嫩av分享吧| 久久久久亚洲精品| 欧美影院天天5g天天爽| 99re99热| 国产成人在线视频网站| 日本少妇毛茸茸高潮| 日韩精品在线观看网站| 中文另类视频| 免费看污污视频| 不卡欧美aaaaa| 免费在线黄色网| 欧美成人r级一区二区三区| aaa在线播放视频| 欧美一区三区二区在线观看| 激情综合自拍| 99久久久久久久久久| 一区二区三区加勒比av| 一卡二卡三卡在线| 久久亚洲国产成人| 你懂的在线观看一区二区| 日韩精品一区二区三区不卡 | 一区二区不卡在线| 国产毛片精品国产一区二区三区| 国产手机在线观看| 欧美片网站yy| sm性调教片在线观看| 四虎影视永久免费在线观看一区二区三区| 亚洲伦伦在线| 国产精品国产三级国产专业不| 在线91免费看| 伊人色综合一区二区三区影院视频| 成人激情直播| 亚洲欧美久久久| 国产一区二区视频在线观看免费| 日韩大片免费观看视频播放| 日韩专区视频网站| 91视频 -- 69xx| 亚洲精品欧美在线|