You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python Gemini应用中实现基于用户输入的动态API调用(非RAG、非硬匹配)

基于Gemini实现动态API调用的干净方案

可以利用Gemini的自然语言理解(NLU)能力识别用户意图,结合意图-处理函数映射表替代硬编码的if-elif逻辑,既避免关键词硬匹配的局限性,又无需依赖第三方RAG库。以下是具体实现方案:

核心思路

  1. 预定义各API对应的处理函数
  2. 让Gemini分析用户输入,返回标准化的意图标签(如news、weather)
  3. 通过字典映射,自动调用对应处理函数

具体实现代码

步骤1:定义API处理函数

先封装各API的调用逻辑:

def call_news_api():
    # 替换为实际新闻API调用逻辑
    return "最新热点新闻:Gemini推出企业级定制服务..."

def call_weather_api():
    # 替换为实际天气API调用逻辑(可根据用户输入中的地点动态传参)
    return "当前天气:上海,多云转晴,气温23~30℃"

def default_handler():
    return "暂时无法处理该请求,请尝试查询新闻或天气。"

步骤2:创建意图-处理函数映射表

用字典建立意图标签与处理函数的关联,后续新增API只需扩展此字典:

intent_handlers = {
    "news": call_news_api,
    "weather": call_weather_api,
    "default": default_handler
}

步骤3:利用Gemini识别用户意图

通过精准Prompt让Gemini返回标准化的意图标签,避免歧义:

import google.generativeai as genai

# 初始化Gemini客户端
genai.configure(api_key="YOUR_API_KEY")
model = genai.GenerativeModel("gemini-pro")

def get_user_intent(user_input):
    prompt = f"""
    请严格分析用户输入的核心意图,仅返回以下标签中的一个:news、weather、default。
    规则:
    - 若用户请求与新闻资讯相关,返回news
    - 若用户请求与天气查询相关,返回weather
    - 无法识别或不属于上述两类的请求,返回default
    用户输入:{user_input}
    """
    response = model.generate_content(prompt)
    return response.text.strip().lower()

def handle_user_input(user_input):
    # 获取意图标签
    intent = get_user_intent(user_input)
    # 匹配对应处理函数并执行
    handler = intent_handlers.get(intent, intent_handlers["default"])
    return handler()

优化与扩展建议

  • 动态参数传递:若需根据用户输入中的细节(如地点、新闻类别)调用API,可让Gemini同时返回意图标签和关键参数,例如让Prompt返回{"intent": "weather", "location": "北京"},再在处理函数中使用这些参数。
  • 安全校验:如果让Gemini直接返回函数名,必须限制允许调用的函数列表,避免执行未授权代码。
  • 意图缓存:对重复或相似的用户请求缓存意图结果,减少Gemini API调用次数,提升响应效率。
  • 多意图处理:若用户同时提出多个请求(如"今天北京的天气和最新科技新闻"),可在Prompt中要求Gemini返回多个意图标签,依次调用对应API并合并结果。

内容的提问来源于stack exchange,提问作者user14990172

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:53:14