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))
相关推荐
威嵌神州2 分钟前
嵌入式排故实录:高并发下串口数据“超时丢包”的根因剖析与架构优化
运维·服务器·嵌入式硬件·缓存
eggwyw1 小时前
Anaconda安装卸载的详细流程指南
开发语言·python
2601_967979121 小时前
纯手写:Python安装pip完整教程,搞了几小时,终于成功
python·教程·pip·安装·包管理
Norna1 小时前
缓存文件从没写出来:一个 .json 被当成目录用了
python
火云代理3 小时前
同一个网站,有的网络能打开、有的打不开?认识 IPv4 与 IPv6 的访问差异
服务器·网络·网络协议·tcp/ip·测试工具·php·状态模式
坤坤子吖4 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
aifannihao4 小时前
AI 学习第 14 课:CNN 训 6 轮卡在 0.5352,数据没打乱
pytorch·python·深度学习·cnn·学习路线
yuyuxun14 小时前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
如夏倾城5 小时前
百度文心(容易被忽略的好用AI)使用方式
人工智能·python·百度·语言模型·dubbo
用户019027581615 小时前
quotes 实时价和 klines 最新收盘价为什么对不上?
python