You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Replicate Point-E API请求输出为json_file格式?

Unity调用Replicate Point-E API无法获取json格式点云数据
  • 需求:通过Unity调用Replicate的Point-E API,传入文本提示生成点云数据(后续要导入Unity转为模型),需要获取包含点云坐标与颜色的json_file格式输出,不需要无用的animation格式GIF动画。
  • 当前问题:已成功发起API请求,但返回结果始终只有GIF格式。尝试在初始请求和后续回调请求中设置output和output_type请求头为json_file,无效果。
  • 排查情况:查阅Replicate官方HTTP文档,未找到修改输出格式的相关说明;文档提到响应可包含多个输出,但等待后仍仅收到一个输出;Replicate网站的API界面显示output_type默认为animation,但无法通过网站设置满足批量/动态调用需求,需通过API参数修改。
  • 已尝试联系Replicate官方两次,未收到回复。

以下是使用的Unity调用脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class Prompt
{
    public string prompt;
}

public class PostResponse
{
    public string completed_at;
    public string created_at;
    public string error;
    public string id;
    public Prompt input;
    public string logs;
    public string metrics;
    public Output[] output;
    public string started_at;
    public string status;
    public string version;
}

public class Output
{
    public string output;
}

public class PointEResponse
{
    public string status;
    public string[] output;
}

public class ReplicateAPI : MonoBehaviour
{
    private string API_ENDPOINT = "https://api.replicate.com/v1/predictions";
    private string REPLICATE_API_TOKEN = "r8_DhOE6C7LuA7edPvLh7Io0ukwbmXCLEY450vc3";

    private void Start()
    {
        StartCoroutine(Predict());
    }

    IEnumerator Predict()
    {
        string requestData = "{\"version\": \"1a4da7adf0bc84cd786c1df41c02db3097d899f5c159f5fd5814a11117bdf02b\", \"input\": {\"prompt\": \"big funny colourful sofa\"}}";

        UnityWebRequest request = UnityWebRequest.Put(API_ENDPOINT, requestData);
        request.method = "POST";
        request.SetRequestHeader("Authorization", "Token " + REPLICATE_API_TOKEN);
        request.SetRequestHeader("Content-Type", "application/json");
        request.SetRequestHeader("output", "json_file");

        yield return request.SendWebRequest();

        if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
        {
            Debug.LogError("Error " + request.responseCode + ": " + request.error);
        }
        else
        {
            Debug.Log(request.downloadHandler.text);
            PostResponse response = JsonUtility.FromJson<PostResponse>(request.downloadHandler.text);

            StartCoroutine(GetResult(response.id));
        }
    }

    IEnumerator GetResult(string id)
    {
        yield return new WaitForSeconds(5);
        UnityWebRequest request = UnityWebRequest.Get(API_ENDPOINT + "/" + id);
        request.SetRequestHeader("Authorization", "Token " + REPLICATE_API_TOKEN);
        request.SetRequestHeader("Content-Type", "application/json");
        request.SetRequestHeader("output", "json_file");

        PointEResponse pointEResponse = new PointEResponse();

        yield return request.SendWebRequest();

        if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
        {
            Debug.LogError("Error " + request.responseCode + ": " + request.error);
            yield break;
        }
        else
        {
            pointEResponse = JsonUtility.FromJson<PointEResponse>(request.downloadHandler.text);
   
            Debug.Log(request.downloadHandler.text);
        }

        if (pointEResponse.status != "succeeded" || pointEResponse.output.Length == 0) 
            StartCoroutine(GetResult(id));
        else 
        {
            print("We got something! " + pointEResponse.output[0]);
        }
    }
}

注:脚本补充了缺失的PointEResponse类定义,修正了请求数据末尾多余的闭合括号。

内容的提问来源于stack exchange,提问作者Mashimaro7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:07:09