COZE插件开发-读取图像

由于需要推理图像小模型,然后返回相关参数,目前商店中没有满足需要的插件,所以开发了一个。

在开发之前,得明白一点:

1. coze发送的图片不是二进制流,而是url链接

以下是后端代码:

import requests
from flask import Flask, request, jsonify
import os
import preprocess_data_module as preproc
from cnn_model import RD_net
import torch

app = Flask(__name__)
device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu")

model = RD_net().to(device)
model.load_state_dict(torch.load("img_model3/xxxxx", map_location=device))
model.eval()

@app.route('/')
def index():
    return jsonify({"message": "Welcome to the RD_net API"})

# 健康检查路由
@app.route('/health', methods=['GET'])
def health_check():
    return jsonify({"status": "OK"})

@app.route('/predict', methods=['POST'])
def get_structure_params():
    content_type = request.headers.get('Content-Type')
    if content_type == 'application/json':
        data = request.get_json()
        file_url = data.get('file')
        if not file_url:
            return jsonify({"error": "No file URL provided"}), 400

        # 下载图片
        try:
            response = requests.get(file_url)
            response.raise_for_status()  # 检查请求是否成功
            temp_image_path = 'temp_image.png'  # 临时保存的文件名
            with open(temp_image_path, 'wb') as f:
                f.write(response.content)  # 保存图片内容
        except Exception as e:
            return jsonify({"error": str(e)}), 500

        # 处理下载的图片
        try:
            processed_data = preproc.preprocess_image(temp_image_path)
            processed_data = processed_data.transpose((2, 0, 1))
            input_tensor = torch.tensor(processed_data, dtype=torch.float).unsqueeze(0).to(device)

            # 使用模型进行预测
            with torch.no_grad():
                output = model(input_tensor)

            structure_params = output.cpu().numpy()
            if structure_params.ndim > 1:
                structure_params = structure_params.flatten()
            # 将数组转换为字符串
            structure_params_str = ', '.join(map(str, structure_params))
            return jsonify({'structure_params': structure_params_str})
        except Exception as e:
            return jsonify({"error": str(e)}), 500
        finally:
            # 删除临时文件
            if os.path.exists(temp_image_path):
                os.remove(temp_image_path)
    else:
        return jsonify({"error": "Invalid Content-Type, expected application/json"}), 415

if __name__ == '__main__':
    app.run(debug=False, host='0.0.0.0', port=8714)

### App 构建器 Coze 平台功能与使用 #### 发布 Bot 到外部平台 通过 Coze 的图形化界面,可以轻松地将创建好的 Bot 发布至外部平台。当一切准备就绪之后,只需点击页面右上角的 **Publish** 按钮[^1],就可以让所开发的 Bot 在其他平台上运行,比如移动应用程序。 #### 版本选择建议 对于计划长期投入使用的项目来说,推荐选用 Coze 提供的企业版或专业版服务。尽管个人版能满足基本需求,但在企业环境中更高级别的版本能提供更好的支持和服务质量。值得注意的是,具体哪个时间点发布了新版本可能并不固定,用户应关注官方通知获取最新消息[^2]。 #### 应用程序令牌管理 为了安全有效地访问特定资源,Coze 要求开发者利用唯一的 `app_token` 进行身份验证。这个令牌通常是一个 URL 链接形式,包含了必要的参数用于指定目标数据库表以及视图等信息。例如,下面是一条典型的 app_token 地址: ```plaintext https://qcnwyids019s.feishu.cn/base/ZJCXbUDU9aQ7eNs1hefciZMnnxc?table=tblO8mSbLqHDlh2x&;view=vewg1XIcPC ``` 请注意妥善保管此类敏感数据,避免泄露给无关人员[^3]。 #### 设计美观的应用界面 为了让最终呈现出来的应用更加吸引人,在设计阶段应当注重用户体验。可以通过向画板中引入多个可变元素(如标题、名言警句、日期和背景图像),并合理安排它们之间的层次关系来增强视觉效果。特别是针对文字部分,可以选择不同的文本框样式——单行或多行显示方式取决于实际应用场景的需求;而对于整个布局而言,则可以在最底层放置一张高质量的背景图片,并在其上方叠加一层半透明遮罩以突出重要信息[^4]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七月花nancy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值