python_调用远程服务器上的openclaw

python_调用远程服务器上的openclaw

bash 复制代码
import json
import os
import urllib.error
import urllib.request
import uuid


GATEWAY_TOKEN = "XXX"


def query_openclaw(question: str) -> str:
    base_url = os.getenv(
        "OPENCLAW_API_BASE", "https://openclaw-api.upvibe.site"
    ).rstrip("/")
    if not GATEWAY_TOKEN or GATEWAY_TOKEN == "请在这里填写 Gateway Token":
        raise RuntimeError("请先在代码顶部填写 GATEWAY_TOKEN")

    payload = {
        "model": "openclaw:main",
        # A fresh session prevents one slow request from blocking later queries.
        "user": f"local-feishu-search-{uuid.uuid4()}",
        "stream": False,
        "messages": [
            {
                "role": "user",
                "content": (
                    "使用 feishu-internal-search 技能查询飞书内部资料。"
                    "综合相关文档、知识库和群聊记录,形成直接、可执行的答案,"
                    "根据问题类型控制范围:具体问答应精炼,资料盘点、推荐或查找类问题"
                    "应尽量完整并按用途分类,不固定来源数量,同时去重和排除弱相关内容;"
                    "把文档链接紧跟在对应结论或资料项后面,统一写成 "
                    "[资料名称](URL),不要统一堆在文末;"
                    "回答简洁直接,不重复解释,只保留关键结论、操作和必要依据。\n\n"
                    f"查询问题:{question}"
                ),
            }
        ],
    }
    request = urllib.request.Request(
        f"{base_url}/v1/chat/completions",
        data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
        headers={
            "Authorization": f"Bearer {GATEWAY_TOKEN}",
            "Content-Type": "application/json",
        },
        method="POST",
    )

    try:
        with urllib.request.urlopen(request, timeout=300) as response:
            result = json.load(response)
    except urllib.error.HTTPError as exc:
        detail = exc.read().decode("utf-8", errors="replace")
        raise RuntimeError(f"OpenClaw API 返回 HTTP {exc.code}: {detail}") from exc
    except urllib.error.URLError as exc:
        raise RuntimeError("无法连接 OpenClaw 公网 API;请检查网络和 API 地址") from exc

    return result["choices"][0]["message"]["content"]


if __name__ == "__main__":
    # 在这里填写问题,然后直接点击 VS Code 的"运行 Python 文件"。
    QUESTION = "桌面元素捕获不了"

    print("正在连接 OpenClaw 并查询飞书资料,请稍候......", flush=True)
    print(query_openclaw(QUESTION))
相关推荐
꯭自꯭闭꯭44 分钟前
DM7主备升级方案
linux·服务器·数据库
ebiobiz1 小时前
极海 APM32 使用 Nimmake 编译指南
c++·python·单片机·嵌入式硬件·mcu
lisanmengmeng1 小时前
Nagios邮件报警的配置
linux·运维·服务器
慢云智慧空间1 小时前
从智能终端到空间AI,慢云科技如何重新定义智慧建筑的核心能力?
人工智能·python·科技
范什么特西1 小时前
第二段经历
服务器
Ruiery1 小时前
Linux 6.6内核 CPU 深度解析(六):cpufreq
linux·运维·服务器
2601_962885721 小时前
如何用 Python 做股价历史分位选股?(筛出处于历史低位的股票)
开发语言·python
倔强的石头1062 小时前
【Linux指南】动静态库系列(十一):PLT 与延迟绑定:第一次调用动态库函数时发生了什么
linux·人工智能·python
梦帮科技2 小时前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm
硅基手札2 小时前
【linux内核专栏 08】时间与定时器
linux·运维·服务器