Следующий файл абсолютно прав, я дважды проверил его. Имя соответствует веб-сайту Azure, там есть ключ API. Почему я вообще не получаю ответа при попытке использовать это в Postman в качестве GET?
//https://disney-clone-portfolio.azurewebsites.net/api/getaisuggestion?term=action
import {
app,
HttpRequest,
HttpResponseInit,
InvocationContext,
} from "@azure/functions";
import OpenAI from "openai";
const openAI = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
export async function getAISuggestion(
request: HttpRequest,
context: InvocationContext
): Promise<HttpResponseInit> {
context.log(`Http function processed request for url "${request.url}"`);
const term = request.query.get("term");
const completion = await openAI.chat.completions.create({
messages: [
{
role: "system",
content: `You are a digital video assistant working for services such as Netflix, Disney Plus & Amazon Prime Video. Your job is to provide suggestions based on the videos the user specifies. Provide an quirky breakdown of what the user should watch next! It should only list the names of the films after the introduction. Keep the response short and sweet! Always list at least 3 films as suggestions. If the user mentions a genre, you should provide a suggestion based on that genre.`,
},
{
role: "user",
content: `I like: ${term}`,
},
],
model: "gpt-3.5-turbo-16k",
});
return {
body: completion.choices[0].message.content || "No suggestions found",
};
}
app.http("getAISuggestion", {
methods: ["GET"],
authLevel: "anonymous",
handler: getAISuggestion,
});
да! Смотрите здесь, это закомментированный URL prnt.sc/aV0UV7xJzhG7






import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
import OpenAI from "openai";
const apiVersion = '2024-02-15-preview';
const apiKey = process.env.OPENAI_API_KEY;
const openAI = new OpenAI({
apiKey: apiKey,
baseURL: process.env.OPENAI_BASE_URL,
defaultQuery: { 'api-version': apiVersion },
defaultHeaders: { 'api-key': apiKey },
});
export async function getAISuggestion(
request: HttpRequest,
context: InvocationContext
): Promise<HttpResponseInit> {
context.log(`Http function processed request for url "${request.url}"`);
const term = request.query.get("term");
const completion = await openAI.chat.completions.create({
messages: [
{
role: 'user',
content: `You are a digital video assistant working for services such as Netflix, Disney Plus & Amazon Prime Video. Your job is to provide suggestions based on the videos the user specifies. Provide an quirky breakdown of what the user should watch next! It should only list the names of the films after the introduction. Keep the response short and sweet! Always list at least 3 films as suggestions. If the user mentions a genre, you should provide a suggestion based on that genre.`,
},
{
role: "user",
content: `I like: ${term}`,
},
],
model: "gpt-35-turbo-16k",
});
return {
body: completion.choices[0].message.content || "No suggestions found",
};
};
app.http('getAISuggestion', {
methods: ['GET'],
authLevel: 'anonymous',
handler: getAISuggestion
});
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "node",
"AzureWebJobsFeatureFlags": "EnableWorkerIndexing",
"OPENAI_API_KEY": "a0ee****2a3",
"OPENAI_BASE_URL": "https://{resource_name}.openai.azure.com/openai/deployments/{model}"
}
}


func azure functionapp publish {func-app-name}.


Я сделал еще один, используя OpenAI, немного по-другому, я вообще не использовал функции, но он тоже работал нормально. Дело в том, что при использовании без этого URL-адреса OpenAI, как у меня, он закомментирован. Мой Microsoft Azure смотрите здесь prnt.sc/aV0UV7xJzhG7. Просто чтобы уточнить, как вы запустили эту функцию локально?
@Caio На вашем скриншоте показан URL-адрес приложения-функции, а не URL-адрес функции. Я выполнил свою функцию в браузере, как и в почтальоне, локально. На вашем снимке экрана я не вижу никакой функции на вкладке функций обзорной панели. Правильно ли вы развернули свою функцию? Вы должны увидеть функцию на вкладке функций.
Это то, что я сейчас проверяю. Внутри моего VSCode, используя расширение «Функции Azure», я запускаю приложение «Развертывание в функцию», оно показывает мне это prnt.sc/ihy7a2Xf7ZtY , но кажется, что функция никогда туда не попадает... Понятия не имею, почему, я выбираю правильный приложение-функция, и в моем проекте есть такая функция prnt.sc/I8bZZTuL76D4
Вывод здесь, извините prnt.sc/ItctjGPZoruu
@Caio, поэтому после развертывания триггер не синхронизируется, поэтому вы не можете увидеть эту функцию. Проверьте настройки вашего приложения, если у вас добавлены AzureWebJobFeatureFlags, как показано на моем снимке экрана.
Если его нет, добавьте AzureWebJobsFeatureFlags:EnableWorkerIndexing и затем разверните. После развертывания вы сможете увидеть конечную точку вашей функции на вкладке вывода в коде vs.
Это уже есть, проверьте здесь prnt.sc/TCCIIietAJy4
@Caio Добавьте его в приложение-функцию перед развертыванием, если оно отсутствует. Чтобы добавить навигацию в приложение-функцию -> переменные среды, а затем добавить ключ и значения в настройках приложения. Я также добавил скриншот в свой ответ, пожалуйста, проверьте. Когда мы развертываем функцию в приложении-функции, локальный файл настроек не развертывается вместе с ним, он предназначен только для локальной разработки.
@Caio в вашем случае добавьте указанные значения в приложение-функцию -> конфигурация, поскольку портал Azure еще не обновлен, поэтому вы можете не видеть переменные среды в приложении-функции. Так что добавьте его в приложение Configuration Blade of Function.
внутри VSCode я загрузил локальные настройки, чтобы они синхронизировались, как вы можете видеть здесь prnt.sc/Vf8lY4ZrwlXw. А твой скриншот не пришел!
и действительно, я не смог найти опцию переменных среды
Хорошо, кажется, вы добавили это. Можете ли вы развернуть сейчас
HTTP-триггеров по-прежнему нет: prnt.sc/kWaUXfHvdgZj prnt.sc/sbNYjdAwbFsE prnt.sc/4qI7BRPUW9GT
Можете ли вы поделиться здесь скриншотом своего кода функции, а пока попробуйте опубликовать его с помощью этой команды func azure functionapp publish {func-app-name}
func не будет существовать для меня как команда, следует ли мне установить инструменты Azure или что-то в этом роде? Моя функция prnt.sc/q0YA-xsP1nye
Полная команда 1. az login 2. az account set --subscription "Subscription name" 3. func azure functionapp publish functionappname
Попробуйте перезапустить приложение-функцию один раз перед развертыванием.
@Caio, можешь ли ты получить результат локально?
Я добираюсь до этого, просто нужно установить Functions Core Tools, подождите
окей, вот это странно prnt.sc/wy-50BIPUAhh prnt.sc/S8dgdvo_VIQ0
окей, обновление: у меня есть это: prnt.sc/QDDJ1Lu_9fHK почтальон дает мне это prnt.sc/1GRmdfXHeRpA
@Caio, удалось ли вам получить результат локально? Ваша функция развернута успешно, но я считаю, что вам нужно проверить, работает ли ваша функция локально, если да, то она должна работать и в приложении-функции.
не совсем, какую команду вы использовали для локального развертывания?
Для локального запуска либо запустите проект в режиме отладки, либо нажмите fn + f5, либо используйте func host start в терминале.
Разве это не бесплатно? prnt.sc/3LHH2kN_x3n6
@Caio Нет, это не бесплатно. В моем случае я создал экземпляр Azure OpenAI, а затем использовал его учетные данные, такие как baseurl и ключ.
Думаю, мы нашли мою проблему, не так ли? хаха
@Caio Да, я думаю, это может быть причиной того, что вы не получаете вывод в приложении-функции
огромное вам спасибо за ваше расположение!
Настроена ли функция как общедоступная? Как вы развернули эту функцию?