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))
相关推荐
benchmark_cc3 小时前
QuantDash 安装成功后,如何验证 Python 环境可以正常导入 SDK?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
吉普赛的歌4 小时前
如何设置服务器固定时间点自动重启一次
运维·服务器
4SAPI4 小时前
内容生成与文本润色场景下的大模型 API 聚合网关选型指南
人工智能·gateway·php
Carol06304 小时前
上肢及肩肘关节
java·服务器·数据库
一世繁华行4 小时前
CAPL浏览器(翻译自官方文档)
运维·服务器·数据库
zh路西法4 小时前
【模型式强化学习】(二)PETS——从概率动力学模型到模型预测控制(MPC)
pytorch·python·强化学习·pe·mpc·ces·pets
刚入门的大一新生5 小时前
Linux-进程间通信2
linux·运维·服务器
电科_银尘5 小时前
【深度学习项目实战·02】Linux服务器环境搭建:从SSH登录到稳定运行项目
linux·服务器·深度学习
梦帮科技5 小时前
量子纠缠网络与量子隐形传态攻防:量子中继器信道串扰、纠缠态保真度降解与量子路由劫持
开发语言·网络·人工智能·算法·自动化·php
Python自动化直播5 小时前
智能脚本批量管理拆开看:导入、导出、重写、试听
前端·python·ai·秒播