更新时间:2026-05-26 GMT+08:00
示例:基于控制台的工具开发与应用实践
本示例介绍基于控制台的工具开发与应用实践。
基于控制台的工具开发与应用实践
- 登录AgentArts智能体开发平台。
- 在左侧导航栏选择“开发中心 > 组件库 ”,单击“沙箱工具”页签,进入沙箱工具界面。
- 单击右上角“创建代码解释器”,参考图1配置后单击“立即创建”。
- 代码解释器创建完成后,在列表可查看已创建的代码解释器的名称。
- 执行以下命令安装agentarts-sdk,langgraph,langchain_openai包。
# 安装agentarts-sdk包 pip install agentarts-sdk # 安装langgraph包 pip install langgraph # 安装langchain_openai包 pip install langchain-openai
配置访问端点:通过AGENTARTS_CODEINTERPRETER_DATA_ENDPOINT设置环境变量 ,访问端点获取请参考终端节点,获取到终端节点后,在配置使用时,请配置为http://{域名}。
- 导入代码解释器及其它包。
import json import os from typing import Annotated, TypedDict from langchain_core.messages import AIMessage, BaseMessage, HumanMessage, SystemMessage from langchain_core.tools import tool from langchain_openai import ChatOpenAI from langgraph.graph import END, StateGraph from langgraph.graph.message import add_messages from langgraph.prebuilt import ToolNode from agentarts.sdk import AgentArtsRuntimeApp from agentarts.sdk.tools import code_session app = AgentArtsRuntimeApp()
- 单击列表操作列的“调用代码”,参考代码示例在开发智能体应用的代码中定义能够执行指定python代码的工具。获取API_KEY请参考如何获取沙箱工具的API_KEY。
@tool def execute_python_tool(code: str, description: str = ""): """Execute Python Code in the sandbox""" api_key = "your_actual_api_key" # your api key with code_session("your_region", "your_code_interpreter_name", api_key=api_key) as code_client: response = code_client.invoke( operate_type="execute_code", api_key=api_key, arguments={ "code": code, "language": "python", "clear_context": False } ) return json.dumps(response["result"])
- 编写系统提示词。
SYSTEM_PROMPT = """你是一个AI助手,可以使用Python代码执行工具来解决问题。 可用工具: - execute_python_tool(code: str, description: str): 执行Python代码 使用原则: 1. 仅在需要精确计算或复杂逻辑时使用工具 2. 简单问题直接回答,无需工具验证 3. 工具调用最多1-2次,避免重复验证 4. 获得结果后立即返回答案 """
- 开发Agent并集成工具。
在此步骤中,请填写拥有使用权限的模型(例如:DeepSeek-V3),并补充模型的api_key 和 base_url。您还可以根据需要自定义模型参数,并将自定义工具集成到Agent中。
# 创建Agent llm = ChatOpenAI( model="DeepSeek-V3", api_key=os.environ.get("MODEL_API_KEY", ""), base_url=os.environ.get("BASE_URL", ""), max_tokens=1000, temperature=0.7, ) # 创建工具列表 tools = [execute_python_tool] # 工具绑定Agent llm = llm.bind_tools(tools) # 定义graph状态 class AgentState(TypedDict): messages: Annotated[list[BaseMessage], add_messages] def call_model(state: AgentState): """调用模型并返回响应""" if not state["messages"] or all( not isinstance(msg, SystemMessage) for msg in state["messages"] ): messages = [SystemMessage(content=SYSTEM_PROMPT)] + state["messages"] else: messages = state["messages"] response = llm.invoke(messages) return {"messages": [response]} def should_continue(state): """判断是否继续使用工具""" last_message = state["messages"][-1] if isinstance(last_message, AIMessage): has_tool_calls = bool(last_message.tool_calls) if has_tool_calls: return "tools" return END # 创建LangGraph工作流 workflow = StateGraph(AgentState) workflow.add_node("agent", call_model) workflow.add_node("tools", ToolNode(tools)) # 设置入口 workflow.set_entry_point("agent") # 添加边 workflow.add_conditional_edges("agent", should_continue, {"tools": "tools", "__end__": "__end__"}) workflow.add_edge("tools", "agent") agent = workflow.compile()至此,已经完成了一个简易的Agent开发。
- 使用Agent。
@app.entrypoint def agent_chat(payload: dict): query = "告诉我1到100之间最大的质数" # 运行Agent result = agent.invoke({ "messages": [HumanMessage(content=query)] }) return result["messages"][-1].content if __name__ == '__main__': app.run()启动后,可通过在命令行执行 curl --location http://localhost:8080/invocations --data-raw "{}"来获取请求的结果,此处以部署在本地8080端口为例,请根据实际情况填写url信息。
父主题: 沙箱工具
