Я работаю над приложением Gemini, в котором мне нужно выполнять динамические вызовы API на основе пользовательского ввода. В частности, я хочу выполнять разные запросы API в зависимости от запроса пользователя. Например, если пользователь запрашивает последние новости, приложение должно выполнить API-вызов службы новостей. Аналогично, если пользователь хочет узнать текущую погоду, приложение должно получить данные из API погоды.
Вот основная схема того, чего я пытаюсь достичь:
Захват ввода пользователя. Определите тип запроса на основе входных данных (например, новости или погода). Сделайте соответствующий вызов API и верните данные пользователю. Я хочу избегать использования для этой цели сторонних библиотек, таких как RAG. Как я могу реализовать эту функциональность в моем приложении Gemini простым и эффективным способом?
И я не хочу использовать такой подход »
def handle_user_input(user_input):
if "news" in user_input:
# Call news API
pass
elif "weather" in user_input:
# Call weather API
pass
else:
return "I can't handle that request."
Я предлагаю использовать словарь. По сути, то, что вы хотите сделать, — это нечто, называемое «паттерном стратегии». Вы хотите выбрать другую «стратегию» в вашем API-интерфейсе на основе разных входных данных.
так это будет выглядеть так: у вас есть словарь {"news": "news-url", "weather": "weather-url"}
и тогда ваш код будет очень простым
user_input = ""
url = api_dict[user_input]
# make api call
и в начале вашей программы вам необходимо инициализировать свой dict. наличие этой структуры позволяет вам даже написать json-файл, проанализировать его и использовать в качестве словаря, что означает, что вам даже не нужно редактировать код для обновления доступных API.
В конце концов, при создании динамической программы параметры всегда нужно будет каким-то образом вводить. В худшем случае это происходит внутри кода, например, если вы успешно поняли, это плохо, поскольку это делает код длинным, нечитаемым и его трудно изменить. .
Улучшение, которое я предложил, заключается в создании этой динамической карты параметров в виде файла или словаря Python в начале программы и ее использовании.
наиболее динамичным вариантом было бы, если бы код мог генерировать разные ответы на разные входные данные исключительно на основе входных данных. таким примером могут быть Gemini и Chat-GPT, где вы можете задать маршрут API как «какая погода во Франции», так и «сколько будет 4 + 4», и он даст подходящий ответ (хотя и не всегда правильный)
РЕДАКТИРОВАТЬ (на основе последнего комментария)
Теперь я лучше понимаю ваш вопрос. Не могу сказать, что понимаю ваши рассуждения, но реализация очень проста, вот с кем я поговорил:
chatGPT
here are a few api routes
http://test/weather
http://test/stocks
http://test/facts
in the next message I will put user input and based on the input you need to output the appropriate url
ChatGPT
Got it! Please provide the user input in your next message, and I'll give you the appropriate URL.
what should I wear tomorrow
ChatGPT
For the query "what should I wear tomorrow," the appropriate URL is:
http://test/weather
вам понадобится
затем вы запрашиваете ввод пользователя и получаете свой URL-адрес в качестве ответа
ключевые вопросы:
обновил мой ответ, обязательно проверьте его
Спасибо за ваш подробный ответ. Однако я хочу избежать поиска определенных подстрок во входных данных пользователя. Вместо этого я ищу способ реализовать это с помощью обработки естественного языка (NLP), чтобы более разумно понимать намерения пользователя. В частности, я ищу решение на основе NLP для распознавания намерений пользователя и выполнения соответствующих вызовов API без явного сравнения строк в коде. Что-то вроде ИИ-бота, который пишет за меня API-запросы