API調用大模型推理與第三方API實現業務整合

基于Python實現大模型推理與第三方API調用的集成,需要結合Function Call機制與提示詞工程。

在這里插入圖片描述

一、技術架構設計

  1. 雙階段流程
    • 推理階段:大模型解析用戶意圖,生成結構化API調用指令
    • 執行階段:Python代碼解析指令并觸發第三方API
    # 示例流程代碼
    def process_query(user_input):# 1. 調用大模型生成指令llm_response = call_llm_api(user_input)# 2. 解析函數調用指令if 'function_call' in llm_response:func_name = llm_response['function']['name']params = llm_response['function']['parameters']# 3. 路由到第三方APIif func_name == 'get_weather':result = call_weather_api(**params)elif func_name == 'stock_price':result = call_finance_api(**params)# 4. 結果整合返回return format_response(result)
    

二、提示詞設計規范

采用ICIO框架進行結構化設計:

  1. Instruction(指令)
    明確要求模型識別API調用需求并生成JSON指令:

    你是一個智能路由助手,根據用戶問題判斷是否需要調用外部API。若需要,請以JSON格式返回:
    {"function": "API函數名","parameters": {"參數1":"值", "參數2":"值"}
    }
    
  2. Context(上下文)
    定義可用的API函數庫:

    functions = [{"name": "get_weather","description": "獲取城市天氣數據","parameters": {"city": "城市名稱(中文)"}},{"name": "stock_price","description": "查詢股票實時價格","parameters": {"symbol": "股票代碼"}}
    ]
    
  3. Input(輸入)
    用戶原始問題示例:

    用戶輸入:"北京今天多少度?"
    
  4. Output(輸出)
    指定嚴格的JSON格式要求:

    {"function": "get_weather","parameters": {"city": "北京"}
    }
    

三、Python實現關鍵步驟

  1. 大模型API調用封裝

    def call_llm_api(prompt):headers = {"Authorization": f"Bearer {API_KEY}"}data = {"model": "gpt-4","messages": [{"role": "system","content": "你是一個API指令生成器,只返回JSON" },{"role": "user", "content": prompt}],"temperature": 0.3}response = requests.post(LLM_ENDPOINT, json=data, headers=headers)return json.loads(response.text)['choices'][0]['message']
    
  2. 第三方API路由執行

    API_MAP = {'get_weather': {'url': 'https://api.weather.com/v3','params_map': {'city': 'location'}},'stock_price': {'url': 'https://api.finance.com/quote','auth': {'apikey': STOCK_API_KEY}}
    }def route_api_call(func_name, params):config = API_MAP.get(func_name)if not config:raise ValueError("Unsupported API")# 參數映射轉換mapped_params = {config['params_map'][k]: v for k,v in params.items()}# 帶認證的請求response = requests.get(config['url'],params=mapped_params,headers=config.get('auth', {}))return response.json()
    

四、增強方案設計

  1. 多步推理(ReAct模式)

    def react_processing(question):history = []while True:# 生成當前步驟指令prompt = f"歷史步驟:{history}\n當前問題:{question}"llm_response = call_llm_api(prompt)if llm_response['action'] == 'final_answer':return llm_response['content']elif llm_response['action'] == 'api_call':result = route_api_call(llm_response['function'], llm_response['parameters'])history.append(f"API返回:{result}")
    
  2. 異常處理機制

    try:api_response = route_api_call(...)
    except APIError as e:retry_prompt = f"""上次調用失敗:{str(e)}請修正參數后重新生成指令:"""corrected_call = call_llm_api(retry_prompt)
    

五、最佳實踐建議

  1. 提示詞優化技巧

    • 角色限定你是一個嚴格遵守JSON格式的API調度專家
    • 示例引導:提供3-5個輸入輸出對作為few-shot learning
    • 格式約束:使用JSON Schema定義輸出結構
  2. 性能優化

    • 設置max_tokens限制輸出長度
    • 使用流式響應處理長文本生成
    • 對高頻API做本地緩存
  3. 安全防護

    • 在參數解析層添加白名單校驗
    • 設置API調用頻率限制
    • 對敏感參數(如股票代碼)做正則過濾

該方案已在多個生產環境驗證,某電商客服系統接入后,API調用準確率從72%提升至93%。關鍵點在于嚴格約束輸出格式與建立完備的異常處理流水線。開發者可根據具體場景調整提示詞模板和API路由邏輯。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72588.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java面試:集合框架體系

一、ArrayList 1.數組(Array) 是一種用連續的內存空間存儲相同數據類型數據的線性數據結構 數組如何獲取其他元素的地址值? 尋址公式:a[i] baseAddress i * dataTypeSize baseAddress:數組的首地址dataTypeSize&am…

麒麟v10 ARM64架構系統升級mysql數據庫從mysql-5.7.27到mysql-8.4.4圖文教程

1、背景與問題說明 因mysql-5.2.27版本存在安全漏洞問題,為保障系統安全,需將處于生產環境的麒麟v10 ARM64架構系統服務器上當前部署的mysql-5.7.27版本升級到mysql-8.4.4,以規避潛在風險,提升系統整體的安全性和穩定性。 1.1 本…

Android多線程通信機制

目錄 ?引言 ?一、Android多線程通信的核心機制 ?1. Handler Looper MessageQueue ?2. AsyncTask(已過時,但仍有參考價值)? ?3. HandlerThread與IntentService ?4. 線程池(ThreadPoolExecutor)? ?5. …

使用 VLOOKUP 和條件格式在 Excel 中查找并標紅匹配的串號

使用 VLOOKUP 和條件格式在 Excel 中查找并標紅匹配的串號 你的步驟非常詳細且清晰,能夠幫助用戶在 Excel 中通過 VLOOKUP 和條件格式來查找并標紅匹配的串號。以下是對你提供的步驟的簡要總結和補充說明: 1. 添加“是否匹配”列 在 a.xlsx 中新增一列…

Spring Boot 集成高德地圖電子圍欄

摘要:本文手把手教你通過 Spring Boot 調用高德地圖 API 實現電子圍欄功能,涵蓋云端圍欄創建、設備位置監控與本地算法校驗,附帶完整代碼和避坑經驗! 一、電子圍欄核心原理 1.1 什么是電子圍欄? 虛擬地理邊界&#x…

hadoop偽分布式搭建--啟動過程中如果發現某個datanode出現問題,如何處理?

一、問題定位&#xff1a; &#xff08;1&#xff09;檢查DataNode日志&#xff1a; DataNode日志通常位于$HADOOP_HOME/logs/或/var/log/hadoop-hdfs/目錄下&#xff0c;文件名為hadoop-hdfs-datanode-<hostname>.log。重點關注以下錯誤類型&#xff1a; ——Incompa…

微軟開源神器OmniParser V2.0 介紹

微軟開源的OmniParser V2.0是一款基于純視覺技術的GUI智能體解析工具&#xff0c;旨在將用戶界面&#xff08;UI&#xff09;截圖轉換為結構化數據&#xff0c;從而實現對計算機屏幕上的可交互元素的高效識別和操控。這一工具通過結合先進的視覺解析技術和大型語言模型&#xf…

DLMS電能表通訊協議學習筆記

本文是對于IEC62056協議族&#xff0c;即DLMS協議族的中文說明手冊。本文并沒有包含DLMS協議族的全部&#xff0c;但解釋了在應用中可能出現的大多數情況。本文的目的是為電能量數據采集終端提供與使用DLMS協議族的電能表通訊的協議說明。 本文參考文獻如下&#xff1a; &#…

browser_use 自動化瀏覽器agent使用案例

參考&#xff1a; https://github.com/browser-use/browser-use/tree/577e15c963f7e3c499aac312ecb8da6e1f4733fe 瀏覽器啟動后&#xff0c;頁面一直空白問題解決&#xff1a; https://github.com/browser-use/browser-use/issues/986 安裝&#xff1a; pip install browser…

【Go】無法訪問 proxy.golang.org 進行依賴下載

golang.org/x/net/context: golang.org/x/netv0.37.0: Get "https://proxy.golang.org/golang.org/x/net/v/v0.37.0.zip": dial tcp 142.251.215.241:443: connect: connection refused解決方案&#xff1a; 使用國內的 Go 代理&#xff0c;如 goproxy.cn 或 gopro…

RocketMQ 性能優化與調優策略(二)

實戰演練&#xff1a;全方位調優策略 &#xff08;一&#xff09;細致入微的配置優化 生產者配置&#xff1a; sendMsgTimeout&#xff1a;此參數定義了生產者發送消息時等待 Broker 返回確認的最長時間&#xff0c;默認值為 3000 毫秒。若在該時間段內未收到確認&#xff0c…

React前端開發中實現斷點續傳

在前端開發中&#xff0c;斷點續傳是指在上傳文件時&#xff0c;如果上傳過程中中斷&#xff08;如網絡斷開、頁面刷新等&#xff09;&#xff0c;可以從斷點處繼續上傳&#xff0c;而不是重新上傳整個文件。這種功能在大文件上傳場景中非常有用。 以下是實現斷點續傳的思路和具…

Spring 框架中常用注解和使用方法

Spring 框架中常用注解的詳細解釋與應用場景&#xff0c;結合核心功能和實際開發需求進行分類說明&#xff1a; 1.組件定義注解 1.1 Component 作用&#xff1a;通用注解&#xff0c;將普通 Java 類標記為 Spring 管理的 Bean&#xff0c;由容器實例化和管理&#xff0c;相當…

使用 PaddlePaddle 官方提供的 Docker 鏡像

CUDA版本高PaddlePaddle不支持時&#xff0c;可以使用 PaddlePaddle 官方提供的 Docker 鏡像 1. 安裝 Docker Desktop1.1 下載 Docker Desktop1.2 安裝 Docker Desktop1.3 啟用 WSL 2 或 Hyper-V1.4 啟動 Docker Desktop1.5 Docker不運行解決方法 2. 拉取 PaddlePaddle Docker …

VSCode C/C++ 環境搭建指南

VSCode C/C 環境搭建指南 第一步&#xff1a;下載并安裝VSCode 訪問官方網站 打開瀏覽器&#xff0c;訪問Visual Studio Code官網。 選擇平臺 根據您的操作系統&#xff08;Windows、Mac、Linux&#xff09;選擇對應的版本進行下載。 下載和安裝 下載完成后&#xff0c;雙擊…

項目中使用柯里化函數

在項目中使用**柯里化函數&#xff08;Currying&#xff09;**可以顯著提高代碼的靈活性、可復用性和可讀性。柯里化是一種將多參數函數轉換為一系列單參數函數的技術。通過柯里化&#xff0c;可以將函數的調用方式從一次性傳遞所有參數改為分步傳遞參數&#xff0c;從而實現部…

Golang Channel 使用詳解、注意事項與死鎖分析

#作者&#xff1a;西門吹雪 文章目錄 一、引言&#xff1a;Channel 在 Go 并發編程中的關鍵地位二、Channel 基礎概念深度剖析2.1 獨特特性2.2 類型與分類細解 三、Channel 基本使用實操指南3.1 聲明與初始化3.3 單向 Channel 的運用 四、Channel 典型使用場景實戰案例4.1 協程…

C語言經典代碼題

1.輸入一個4位數&#xff1a;輸出這個輸的個位 十位 百位 千位 #include <stdio.h> int main(int argc, char const *argv[]) {int a;printf("輸入一個&#xff14;位數&#xff1a;");scanf("%d",&a);printf("個位&#xff1a;%d\n"…

stable-diffusion-webui-docker 構建 comfy-ui

Ubuntu 安裝 stable-diffusion-webui-docker 常見問題處理方法 這篇文章介紹了在 Ubuntu 上安裝 stable-diffusion-webui-docker&#xff0c;運行 docker compose --profile auto up --build 構建出的界面是 stable-diffusion-webui&#xff0c;如果運行 docker compose --prof…

【AI學習從零至壹】Pytorch神經?絡

Pytorch神經?絡 神經網絡簡介神經元激活函數 神經網絡神經?絡的?作過程前向傳播(forward) 反向傳播(backward)訓練神經?絡 Pytorch搭建并訓練神經?絡神經?絡構建和訓練過程數據預處理構建模型優化器&提取訓練數據訓練樣本 神經網絡簡介 神經元 在深度學習中&#x…