LangChain 核心组件之Agents

Agent的定义:

Agents combine language models with tools to create systems that can reason about tasks, decide which tools to use, and iteratively work towards solutions.

Agent 可以将大语言模型跟工具结合起来,创建能够对任务进行推理、决定使用哪种工具并进行迭代的寻找解决方案的系统。

create_agent 提供 agent 实现的接口

核心组件

  • 模型(model)

    • 静态模型
      • # static model
        
        # 方式一
        from langchain.agents import create_agent
        from langchain.tools import tool
        
        @tool
        def tools():
            pass
        agent = create_agent(
            'gpt-5',
            tools=[tool]
        )
        
        # 方式二
        from langchain.agents import create_agent
        from langchain_openai import ChatOpenAI
        model = ChatOpenAI(
            model='gpt-5',
            temperature=0.1,
            max_tokens=1000,
            timeout=30
        )
        agent1 = create_agent(model, tools=[tools])

    • 动态模型
      • # dynamic model
        import os
        from langchain_openai import ChatOpenAI
        from langchain.agents import create_agent
        from langchain.agents.middleware import wrap_model_call, ModelRequest,ModelResponse
        
        os.environ['DEEPSEEK_API_KEY'] = 'xxxxxxxxxxx'
        
        
        basic_model = ChatOpenAI(
            model='deepseek-chat',
            api_key=os.getenv('DEEPSEEK_API_KEY'),
            base_url='https://api.deepseek.com',
            temperature=0.3
        )
        
        advanced_model = ChatOpenAI(
            model='deepseek-chat',
            api_key=os.getenv('DEEPSEEK_API_KEY'),
            base_url='https://api.deepseek.com',
            max_tokens=2000
        )
        
        @wrap_model_call
        def dynamic_model_selection(request: ModelRequest, handler) -> ModelResponse:
            message_count = len(request.state['messages'])
        
            if message_count > 10:
                model = advanced_model
            else:
                model = basic_model
        
            request.model = model
            return handler(request)
        
        agent = create_agent(
            model = basic_model,
            middleware=[dynamic_model_selection]
        )
        

  • 工具(tools)

    • Multiple tool calls in sequence (triggered by a single prompt)
    • Parallel tool calls when appropriate
    • Dynamic tool selection based on previous results
    • Tool retry logic and error handling
    • State persistence across tool calls
    •    定义工具
      • from langchain.tools import tool
        from langchain.agents import create_agent
        import os
        from langchain_openai import ChatOpenAI
        
        @tool
        def search(query: str) -> str:
            """Search for information."""
            return f"Results for query: {query}"
        
        @tool
        def get_weather(location: str) -> str:
            """Get weather information for a location."""
            return f"Weather in {location}: Sunny, 72F"
        
        os.environ['DEEPSEEK_API_KEY'] = 'xxxxxxxxx'
        
        
        model = ChatOpenAI(
            model='deepseek-chat',
            api_key=os.getenv('DEEPSEEK_API_KEY'),
            base_url='https://api.deepseek.com',
            temperature=0.3
        )
        
        agent = create_agent(model, tools=[search, get_weather])

    • 工具错误处理
      • from langchain.tools import tool
        from langchain.agents import create_agent
        import os
        from langchain_openai import ChatOpenAI
        
        @tool
        def search(query: str) -> str:
            """Search for information."""
            return f"Results for query: {query}"
        
        @tool
        def get_weather(location: str) -> str:
            """Get weather information for a location."""
            return f"Weather in {location}: Sunny, 72F"
        
        os.environ['DEEPSEEK_API_KEY'] = 'xxxxxxxxx'
        
        
        model = ChatOpenAI(
            model='deepseek-chat',
            api_key=os.getenv('DEEPSEEK_API_KEY'),
            base_url='https://api.deepseek.com',
            temperature=0.3
        )
        
        
        # Tool error handing
        @wrap_tool_call
        def handle_tool_errors(request, handler):
            try:
                return handler(request)
            except Exception as e:
                return ToolMessage(
                    content=f"Tool Error: Please check  input and try again. ({str(e)})",
                    tool_call_id=request.tool_call["id"]
                )
        
        agent = create_agent(
            model=model,
            tools=[search, get_weather],
            middleware=[handle_tool_errors]
        )
    • 使用ReAct loop 工具
  • 系统提示词(System prompt)

    • 设置方式
      • agent = create_agent(
            model=model,
            tools=[search, get_weather],
            system_prompt="You are a helpful assistant. Be concise and accurate."
        )
    • 动态系统提示词
      • from typing import TypedDict
        from langchain.agents import create_agent
        from langchain.agents.middleware import dynamic_prompt, ModelRequest
        
        class Context(TypedDict):
            user_role: str
        
        @dynamic_prompt
        def user_role_prompt(request: ModelRequest) -> str:
            user_role = request.runtime.context.get('user_role','user')
            base_prompt = "You are a helpful assistant."
        
            if user_role == 'expert':
                return f"{base_prompt} Provide detailed technical responses."
            elif user_role == 'beginner':
                return f"{base_prompt} Explain concepts simply and avoid jargon."
        
            return base_prompt
        
        agent = create_agent(
            model=model,
            tools=[search],
            middleware=[user_role_prompt],
            context_schema=Context
        )
        
        result = agent.invoke(
            {"message": [{
                "role": "user",
                "content": "Explain machine learning",
            }]},
            context={"user_role": "expert"}
        )
        
    • 调用方式
      • result = agent.invoke(
            {"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]}
        )
        

【博士论文复现】【阻抗建模、验证扫频法】光伏并网逆变器扫频与稳定性分析(包含锁相环电流环)(Simulink仿真实现)内容概要:本文档是一份关于“光伏并网逆变器扫频与稳定性分析”的Simulink仿真实现资源,重点复现博士论文中的阻抗建模与扫频法验证过程,涵盖锁相环和电流环等关键控制环节。通过构建详细的逆变器模型,采用小信号扰动方法进行频域扫描,获取系统输出阻抗特性,并结合奈奎斯特稳定判据分析并网系统的稳定性,帮助深入理解光伏发电系统在弱电网条件下的动态行为与失稳机理。; 适合人群:具备电力电子、自动控制理论基础,熟悉Simulink仿真环境,从事新能源发电、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握光伏并网逆变器的阻抗建模方法;②学习基于扫频法的系统稳定性分析流程;③复现高水平学术论文中的关键技术环节,支撑科研项目或学位论文工作;④为实际工程中并网逆变器的稳定性问题提供仿真分析手段。; 阅读建议:建议读者结合相关理论教材与原始论文,逐步运行并调试提供的Simulink模型,重点关注锁相环与电流控制器参数对系统阻抗特性的影响,通过改变电网强度等条件观察系统稳定性变化,深化对阻抗分析法的理解与应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值