簡體   English   中英

使用 curl 將發布請求發送到 mlflow api 到多條記錄

[英]send post request using curl to mlflow api to multiple records

我提供了一個 mlflow model 並以這種格式發送 POST 請求:

curl -X POST -H "Content-Type:application/json; format=pandas-split" 
--data '{"columns":["alcohol", "chlorides", "citric acid", "density", 
"fixed acidity", "free sulfur dioxide", "pH", "residual sugar", "sulphates", 
"total sulfur dioxide", "volatile acidity"],"data":[[12.8, 0.029, 0.48, 0.98, 
6.2, 29, 3.33, 1.2, 0.39, 75, 0.66]]}' 
http://127.0.0.1:1234/invocations

它正在得分。 但是,對於我的特定項目,用於評分的 rest api 的輸入將始終是 dataframe/csv 格式的多個記錄,而不是單個記錄。 有人可以指出我如何實現這一目標嗎?

{
    "columns": [
        "alcohol",
        "chlorides",
        "citric acid",
        "density",
        "fixed acidity",
        "free sulfur dioxide",
        "pH",
        "residual sugar",
        "sulphates",
        "total sulfur dioxide",
        "volatile acidity"
    ],
    "index": [
        0,
        1
    ],
    "data": [
        [
            12.8,
            0.029,
            0.48,
            0.98,
            6.2,
            29.0,
            3.33,
            1.2,
            0.39,
            75.0,
            0.66
        ],
        [
            12.8,
            0.029,
            0.48,
            0.98,
            6.2,
            29.0,
            3.33,
            1.2,
            0.39,
            75.0,
            0.66
        ]
    ]
}

要生成 json,請使用 pandas:

import pandas as pd

columns = ["alcohol", "chlorides", "citric acid", "density", 
"fixed acidity", "free sulfur dioxide", "pH", "residual sugar", "sulphates", 
"total sulfur dioxide", "volatile acidity"]
data = [[12.8, 0.029, 0.48, 0.98, 
6.2, 29, 3.33, 1.2, 0.39, 75, 0.66], [12.8, 0.029, 0.48, 0.98, 
6.2, 29, 3.33, 1.2, 0.39, 75, 0.66]]

df = pd.DataFrame(data, columns=columns)
json = df.to_json(orient="split")
print(json)

這有效:

import requests
host = 'localhost'
port = '8001'
url = f'http://{host}:{port}/invocations'
headers = {'Content-Type': 'application/json',}
http_data = test_df.to_json(orient='split')
r = requests.post(url=url, headers=headers, data=http_data)
print(f'Predictions: {r.text}')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM