示例,定义两个工具函数

openclaw OpenClaw手册 2

本指南将帮助您从零开始,到熟练运用其核心功能。

示例,定义两个工具函数-第1张图片-OpenClaw 开源免费 -中文免费安装

第一部分:核心概念与“下载”准备

首先需要明确:OpenClaw/AI助手能力 不是可执行文件,而是一项云服务,您需要通过编程来调用它。

  1. 理解它是什么

    • 它是大语言模型(如GPT-4)与外部工具/函数连接的“智能枢纽”。
    • 您可以用自然语言(如:“查一下上海最近的天气”)发出指令,AI会自动分析您的意图,并调用您预先编写好的“查天气函数”,获取真实数据后,再用自然语言回复您。
    • 核心价值:让AI从“聊天专家”变为“行动专家”,可以操作数据库、发送邮件、分析Excel、控制智能设备等。
  2. “下载”前的环境准备

    • 一个 OpenAI 平台账号:访问 platform.openai.com 注册并登录。
    • 获取 API 密钥:在平台页面生成一个密钥,这是调用服务的“密码”,请妥善保管。
    • 选择编程语言和安装SDK:最常用的是 Python
      # 安装官方Python SDK
      pip install openai
    • 代码编辑器:如 VS Code, PyCharm 等。
    • 可选:图形化探索工具:OpenAI Playground 网页端提供了可视化测试助手和函数调用的界面,非常适合学习和调试。

第二部分:基础操作流程(四步法)

以下是一个经典的工作流程,以“查询天气”和“处理订单数据”为例。

步骤1:定义您的“工具”(函数) 这是最关键的一步,您需要明确告诉AI,您有哪些能力(函数)可以供它调用,以及每个函数的用途、输入参数。

    {
        "type": "function",
        "function": {
            "name": "get_current_weather",
            "description": "获取指定城市的当前天气情况",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "城市名,上海,北京",
                    },
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
                },
                "required": ["location"],
            },
        },
    },
    {
        "type": "function",
        "function": {
            "name": "process_order_data",
            "description": "处理订单CSV文件,进行销售分析",
            "parameters": {
                "type": "object",
                "properties": {
                    "file_path": {
                        "type": "string",
                        "description": "订单CSV文件在服务器上的路径",
                    },
                    "analysis_type": {
                        "type": "string",
                        "enum": ["sales_summary", "top_products", "customer_trend"],
                        "description": "需要进行的分析类型",
                    },
                },
                "required": ["file_path", "analysis_type"],
            },
        },
    },
]

步骤2:创建助手并开启对话 将工具列表赋予助手,并开始一个新的对话线程。

from openai import OpenAI
client = OpenAI(api_key='您的API密钥')
# 创建助手
assistant = client.beta.assistants.create(
    name="数据分析小助手",
    instructions="你是一个专业的数据分析和信息查询助手,请根据用户需求,智能判断并调用合适的工具,回复要清晰、专业。",
    model="gpt-4-turbo",
    tools=tools
)
# 创建对话线程
thread = client.beta.threads.create()

步骤3:用户提问与AI决策 用户提出问题后,AI会决定是否需要调用函数,以及调用哪个函数。

# 用户提问
user_message = "帮我分析一下 /data/orders_q2.csv 这个文件的销售概况。"
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content=user_message
)
# 让助手运行(思考)
run = client.beta.threads.runs.create(
    thread_id=thread.id,
    assistant_id=assistant.id
)

步骤4:执行函数调用并提交结果 AI的决策会体现在 run 的状态中,如果它决定调用函数,您需要拦截这个请求,在本地执行真正的函数,并将结果返回给AI。

# 轮询检查运行状态
while run.status not in ["completed", "failed", "requires_action"]:
    run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
    time.sleep(1)
# 如果AI要求执行动作(调用函数)
if run.status == "requires_action":
    tool_calls = run.required_action.submit_tool_outputs.tool_calls
    tool_outputs = []
    for tool_call in tool_calls:
        function_name = tool_call.function.name
        function_args = json.loads(tool_call.function.arguments)
        # --- 这里就是您要编写的真实函数逻辑 ---
        if function_name == "process_order_data":
            # 调用您本地真正的数据分析函数
            result = your_real_data_analysis_function(
                file_path=function_args["file_path"],
                analysis_type=function_args["analysis_type"]
            )
        elif function_name == "get_current_weather":
            result = your_real_weather_api_call(function_args["location"])
        # -------------------------------------
        tool_outputs.append({
            "tool_call_id": tool_call.id,
            "output": str(result) # 将结果转换为字符串
        })
    # 将函数执行结果提交给AI,让它继续生成面向用户的回答
    run = client.beta.threads.runs.submit_tool_outputs(
        thread_id=thread.id,
        run_id=run.id,
        tool_outputs=tool_outputs
    )
# 获取助手的完整回复
messages = client.beta.threads.messages.list(thread_id=thread.id)
latest_message = messages.data[0]
print(latest_message.content[0].text.value)

第三部分:熟练操作与高级技巧

  1. 精准的函数描述description 和参数描述是AI是否准确调用函数的关键,描述要像给一个新员工写说明书一样清晰。
  2. 处理复杂逻辑:一次对话中,AI可能会连续调用多个函数来完成一个复杂任务,您的代码需要能处理这种链式调用。
  3. 上下文管理Thread 保留了完整的对话历史,善用线程来管理不同用户或不同主题的长对话,避免混淆。
  4. 错误处理与降级:在您的真实函数中做好异常处理,如果调用天气API失败,可以返回错误信息给AI,让它向用户解释或建议重试。
  5. 文件上传与处理:Assistants API 支持上传文件(如图片、PDF、CSV),AI可以读取文件内容并结合工具调用进行分析。
    # 上传文件并关联到助手
    file = client.files.create(file=open("report.pdf", "rb"), purpose="assistants")
    assistant = client.beta.assistants.update(
        assistant.id,
        file_ids=[file.id]
    )
  6. 流式响应:对于耗时较长的任务,可以使用流式响应,让用户看到AI的思考过程,体验更佳。

第四部分:常见应用场景

  • 智能数据分析助手:连接数据库,用自然语言查询和生成图表。
  • 自动化客服:调用订单查询、退换货流程等内部系统接口。
  • 个人效率工具:管理日历、发送邮件、总结网页内容。
  • 智能家居中控:通过自然语言控制灯光、电器。
  • 教育辅导:调用计算工具、图形绘制工具来解答数学、物理问题。

总结与学习路径

  1. 入门:在 OpenAI Playground 的 Assistants 板块,通过图形界面体验创建助手、添加工具、测试对话。
  2. 基础开发:使用 Python SDK,完成一个简单的“天气查询”或“计算器”示例。
  3. 项目实战:将它与您的实际工作流结合,例如自动处理每日报表邮件并生成摘要。
  4. 深入优化:研究高级功能,如流式响应、文件处理、并发请求管理。

熟练操作“AI小龙虾/OpenClaw”的核心在于:将模糊的自然语言指令,通过精确定义的函数,转化为确定性的操作,这需要您在“AI意图理解”和“后端业务逻辑”之间架起一座坚固的桥梁。

祝您探索顺利,早日打造出属于自己的强大AI智能体!

标签: 工具函数 定义示例

抱歉,评论功能暂时关闭!