Ключ API
идентификатор проекта
Я менее уверен в местоположении, оно не отображается в консоли, а в чате Gemini говорится, что для моего проекта нет точного местоположения. Как предложил бот, я запросил список через Cloud SDK для идентификатора моего проекта и попробовал несколько мест из полученного списка. Однако местоположение, похоже, не влияет на ответы.
В проекте включены API-интерфейсы Gemini и Vertex AI. У меня также есть пользовательские роли «владелец» и «пользователь Vertex AI», определенные в консоли Cloud, и нет никаких ограничений на ключ API. Также в переменную окружения GOOGLE_APPLICATION_CREDENTIALS установлена соответствующая информация.
По мнению чат-бота Gemini, сгенерированный URL должен работать «с высокой вероятностью». Насколько я вижу, условия, перечисленные ботом, тоже выполняются, но явно что-то не так. Мы будем очень признательны за любую помощь!
Вот две версии кода (хотя обе используют один и тот же URL-адрес, ошибка HTTP разная):
/ / Следующие переменные одинаковы для обоих: ==================================
Код: Выделить всё
private static readonly string projectId = "xxxx";
private static readonly string location = "europe-west1"; // one of several tried
private static readonly string geminiApiKey = "xxxx";
private static readonly string url = $"https://{location}-aiplatform.googleapis.com/v1/projects/{projectId}/locations/{location}/publishers/google/models/gemini-pro:generateContent";
// попытка 1 - результат HTTP 401 "неавторизованный" ======================= ============
Код: Выделить всё
var content = new StringContent(CreateTextRequestBody(text), Encoding.UTF8, "application/json");
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", geminiApiKey);
var response = await client.PostAsync(url, content);
if (response.IsSuccessStatusCode)
{
string responseContent = await response.Content.ReadAsStringAsync();
// Parse the JSON response to get the generated text
return responseContent;
}
else
{
throw new Exception($"Gemini request error: {response.StatusCode} {response.ReasonPhrase}");
}
// попытка 2 — результат HTTP 404 — «Неверный ответ gRPC». ===================================
Код: Выделить всё
var instance = new Google.Protobuf.WellKnownTypes.Value
{
StructValue = new Struct
{
Fields =
{
{ "input_text", Google.Protobuf.WellKnownTypes.Value.ForString("Hello, world!") }
}
}
};
// Convert instance to a list of values
var instances = new List { instance };
// Optional: Additional parameters for prediction
var parameters = new Google.Protobuf.WellKnownTypes.Value
{
StructValue = new Struct
{
Fields =
{
{ "param_key", Google.Protobuf.WellKnownTypes.Value.ForString("param_value") }
}
}
};
try
{
// Making the predict request
PredictResponse response = predictionClient.Predict(url, instances, parameters);
// Print the response
foreach (var prediction in response.Predictions)
{
Debug.WriteLine($"Prediction: {prediction}");
}
}
catch (Grpc.Core.RpcException e)
{
Debug.WriteLine($"RPC failed: {e.Status}");
}
Опять же, любая помощь будет полезна, я понятия не имею, что еще попробовать.
Подробнее здесь: https://stackoverflow.com/questions/785 ... x-ai-c-net
Мобильная версия