Source code for langchain.agents.format_scratchpad.openai_functions

import json
from typing import List, Sequence, Tuple

from langchain_core.agents import AgentAction, AgentActionMessageLog
from langchain_core.messages import AIMessage, BaseMessage, FunctionMessage


def _convert_agent_action_to_messages(
    agent_action: AgentAction, observation: str
) -> List[BaseMessage]:
    """将代理动作转换为消息。

此代码用于从代理动作重构原始的AI消息。

参数:
    agent_action:要转换的代理动作。

返回:
    对应于原始工具调用的AIMessage。
"""
    if isinstance(agent_action, AgentActionMessageLog):
        return list(agent_action.message_log) + [
            _create_function_message(agent_action, observation)
        ]
    else:
        return [AIMessage(content=agent_action.log)]


def _create_function_message(
    agent_action: AgentAction, observation: str
) -> FunctionMessage:
    """将代理动作和观察转换为函数消息。
参数:
    agent_action:代理发送的工具调用请求
    observation:工具调用的结果
返回:
    与原始工具调用对应的FunctionMessage
"""
    if not isinstance(observation, str):
        try:
            content = json.dumps(observation, ensure_ascii=False)
        except Exception:
            content = str(observation)
    else:
        content = observation
    return FunctionMessage(
        name=agent_action.tool,
        content=content,
    )


[docs]def format_to_openai_function_messages( intermediate_steps: Sequence[Tuple[AgentAction, str]], ) -> List[BaseMessage]: """将(AgentAction,工具输出)元组转换为FunctionMessages。 参数: intermediate_steps:LLM迄今为止所采取的步骤,以及观察结果 返回: 发送到LLM进行下一个预测的消息列表 """ messages = [] for agent_action, observation in intermediate_steps: messages.extend(_convert_agent_action_to_messages(agent_action, observation)) return messages
# Backwards compatibility format_to_openai_functions = format_to_openai_function_messages