Skip to main content
本笔记本介绍如何开始使用 Robocorp Action Server 动作工具包与 LangChain。 Robocorp 是通过自定义动作扩展 AI agent、助手和 Copilot 能力的最简便方式。

安装

首先,请参阅 Robocorp 快速入门 了解如何设置 Action Server 并创建您的动作。 在您的 LangChain 应用中,安装 langchain-robocorp 包:
# Install package
pip install -qU langchain-robocorp
按照上述快速入门创建新的 Action Server 后, 它将创建一个包含文件的目录,其中包括 action.py 我们可以按照此处所示,将 Python 函数添加为动作。 让我们向 action.py 添加一个示例函数。
@action
def get_weather_forecast(city: str, days: int, scale: str = "celsius") -> str:
    """
    Returns weather conditions forecast for a given city.

    Args:
        city (str): Target city to get the weather conditions for
        days: How many day forecast to return
        scale (str): Temperature scale to use, should be one of "celsius" or "fahrenheit"

    Returns:
        str: The requested weather conditions forecast
    """
    return "75F and sunny :)"
然后启动服务器:
action-server start
您将看到:
Found new action: get_weather_forecast

通过访问运行在 http://localhost:8080 的服务器并使用 UI 运行函数,进行本地测试。

环境设置

您可以选择设置以下环境变量:
  • LANGSMITH_TRACING=true:启用 LangSmith 日志运行追踪,也可以绑定到相应的 Action Server 动作运行日志。更多信息请参见 LangSmith 文档

使用方法

我们在上面启动了运行在 http://localhost:8080 的本地 Action Server。
from langchain.agents import AgentExecutor, OpenAIFunctionsAgent
from langchain.messages import SystemMessage
from langchain_openai import ChatOpenAI
from langchain_robocorp import ActionServerToolkit

# Initialize LLM chat model
llm = ChatOpenAI(model="gpt-4", temperature=0)

# Initialize Action Server Toolkit
toolkit = ActionServerToolkit(url="http://localhost:8080", report_trace=True)
tools = toolkit.get_tools()

# Initialize Agent
system_message = SystemMessage(content="You are a helpful assistant")
prompt = OpenAIFunctionsAgent.create_prompt(system_message)
agent = OpenAIFunctionsAgent(llm=llm, prompt=prompt, tools=tools)

executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

executor.invoke("What is the current weather today in San Francisco in fahrenheit?")
> Entering new AgentExecutor chain...

Invoking: `robocorp_action_server_get_weather_forecast` with `{'city': 'San Francisco', 'days': 1, 'scale': 'fahrenheit'}`


"75F and sunny :)"The current weather today in San Francisco is 75F and sunny.

> Finished chain.
{'input': 'What is the current weather today in San Francisco in fahrenheit?',
 'output': 'The current weather today in San Francisco is 75F and sunny.'}

单输入工具

默认情况下,toolkit.get_tools() 会将动作作为结构化工具返回。 若要返回单输入工具,请传入一个 Chat 模型用于处理输入。
# Initialize single input Action Server Toolkit
toolkit = ActionServerToolkit(url="http://localhost:8080")
tools = toolkit.get_tools(llm=llm)