Stability.ai API возвращает ошибку: невозможно разобрать объект в поле структуры Go TextToImageRequestBody.text_prompts типа
Я пытаюсь использовать API Stability.ai для создания изображений Stable Diffusion AI.
Я получил ключ API от https://beta.dreamstudio.ai/membership?tab=apiKeys
Я следую документам textToImage здесь: https://api.stability.ai/docs#tag/v1alphageneration/operation/v1alpha/generation#textToImage
Я пытаюсь использовать PHP/cURL для создания изображения с помощью API.
$url = 'https://api.stability.ai/v1alpha/generation/stable-diffusion-512-v2-0/text-to-image';
$data = array(
"api_key_header_Authorization" => "sk-XXX"); // API key here
$data['text_prompts']['text'] = 'a happy robot';
$data['text_prompts']['weight'] = 1;
$postdata = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$result = curl_exec($ch);
curl_close($ch);
print_r ($result);
Вот ответ:
{"name":"decode_payload","id":"sDzSQ7y2","message":"json: невозможно разобрать объект в поле структуры Go TextToImageRequestBody.text_prompts типа []*server.TextPromptRequestBody","temporary":false, "тайм-аут": ложь, "ошибка": ложь}
Я надеялся получить положительный ответ.
2 ответа
text_prompts
должен быть массивом объектов.
$data['text_prompts'][0]['text'] = 'a happy robot';
$data['text_prompts'][0]['weight'] = 1;
См. здесь:https://api.stability.ai/docs#tag/v1alphageneration/operation/v1alpha/generation#textToImage (окно справа)
Как упоминал Foobar, мне нужен был массив объектов.
Теперь у меня есть:
$url = 'https://api.stability.ai/v1alpha/generation/stable-diffusion-512-v2-0/text-to-image';
$headers = [
'Authorization: sk-XXX', // API key
'Accept: image/png',
];
$data['text_prompts'] = $arr_of_obj = array(
(object) [
'text' => 'a happy robot',
'weight' => 1
]);
$postdata = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
curl_close($ch);
print_r ($result);
который возвращает данные png сгенерированного изображения AI