DeepSeek實戰--自定義工具

1. 背景

當前已經有很多AI基礎平臺(比如:扣子、Dify),用戶可以快速搭建Agent,那怎樣將已有的接口能力給大模型調用呢 ? 今天我們來探索一個,非常高效、快捷的方案:將http接口做成Dify平臺的工具,然后編排到Agent中,實現對應業務功能。

2. 環境準備

  • python 版本:3.12.5
  • LLM: deepseek-chat
  • Dify:賬號、地址
  • 依賴包:pip install fastapi uvicorn psutil

3. 實戰

Step1:

通過Lingma寫一個查詢服務器配置的http接口代碼
提示詞

幫我用 FastAPI 開發一個HTTP Server,獲取當前服務器cpu、內存情況。另外,你還需要把 OpenAPI 相關的配置寫好,比如server,operator_id等。

生成代碼

from fastapi import FastAPI
import psutil
import platform# 創建 FastAPI 應用實例
app = FastAPI(title="服務器監控API",description="用于獲取服務器CPU和內存使用情況的API服務",version="1.0.0",servers=[{"url": "http://localhost:8100", "description": "本地開發服務器"},{"url": "http://<你服務器>:8100", "description": "生產服務器"}]
)# 添加自定義OpenAPI配置
app.openapi_tags = [{"name": "monitor","description": "服務器監控相關接口"}
]@app.get("/system/info", tags=["monitor"], summary="獲取系統信息")
async def get_system_info(operator_id: str = None):"""獲取服務器CPU和內存使用情況參數:- operator_id: 操作員ID(可選)返回:- cpu_percent: CPU使用率(%)- memory_percent: 內存使用率(%)- memory_total: 總內存(MB)- memory_available: 可用內存(MB)- memory_used: 已使用內存(MB)- platform: 系統平臺信息- operator_id: 操作員ID(如果提供)"""# 獲取CPU使用率cpu_percent = psutil.cpu_percent(interval=1)# 獲取內存信息memory = psutil.virtual_memory()# 構造返回數據system_info = {"cpu_percent": cpu_percent,"memory_percent": memory.percent,"memory_total": round(memory.total / (1024 ** 2), 2),"memory_available": round(memory.available / (1024 ** 2), 2),"memory_used": round(memory.used / (1024 ** 2), 2),"platform": platform.platform(),}# 如果提供了operator_id,則添加到返回結果中if operator_id:system_info["operator_id"] = operator_idreturn system_info@app.get("/health", tags=["monitor"], summary="健康檢查")
async def health_check():"""服務健康檢查接口"""return {"status": "healthy"}# 如果需要自定義OpenAPI配置,可以重寫openapi方法
def custom_openapi():# 修復遞歸調用問題:保存原始的openapi方法if app.openapi_schema:return app.openapi_schema# 調用FastAPI原始的openapi方法生成schemaopenapi_schema = FastAPI.openapi(app)openapi_schema["info"]["x-logo"] = {"url": "https://fastapi.tiangolo.com/img/logo-margin/logo-teal.png"}app.openapi_schema = openapi_schemareturn app.openapi_schema# 修復遞歸調用問題:只在openapi_schema為None時才執行自定義邏輯
app.openapi = custom_openapiif __name__ == "__main__":import uvicorn# 開發環境 - 僅本地訪問(推薦)# uvicorn.run(app, host="127.0.0.1", port=8100)# 生產環境 - 建議通過反向代理(如nginx)訪問,不直接對外# uvicorn.run(app, host="127.0.0.1", port=8100)# 開發/測試環境 - 允許外部訪問uvicorn.run(app, host="0.0.0.0", port=8100)
Step2:部署到服務器,驗證http服務

啟動python應用
在這里插入圖片描述

在瀏覽器輸入 < 公網 IP>:8100/openapi.json 看看效果
在這里插入圖片描述

Step3:Dify 自定義工具

1)自定義工具
在這里插入圖片描述

2)配置Schema
在這里插入圖片描述

Schema 內容就是上面,在瀏覽器輸入 < 公網 IP>:8100/openapi.json 輸出的結果

Step4:搭建Agent調用工具

1)創建一個 Agent 測試一下工具的調用
在這里插入圖片描述
2)配置Agent在這里插入圖片描述

Step5:檢閱成果

在這里插入圖片描述

4. 總結

1)將python代碼部署到服務器后,無法通過公網ip訪問,折騰了1~2h,結果發現是FastAPI 默認只能在本地訪問;
2)在Dify 配置Agent的時候,發現llm節點,調用工具后,無法透傳到后續節點,然后將工具節點加載到llm節點前解決;
3)Dify 上下變量引用,無法在llm節點提示詞中,引用json格式數據。研究了一下發現是,Dify的bug ,用占位符可以正常引入json格式變量。

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

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

相關文章

“移動零”思路與題解

給定一個數組 nums&#xff0c;編寫一個函數將所有 0 移動到數組的末尾&#xff0c;同時保持非零元素的相對順序。請注意 &#xff0c;必須在不復制數組的情況下原地對數組進行操作。思路講解&#xff1a;舉例如下&#xff1a;實現代碼是&#xff1a;class Solution { public:v…

關于行內元素,行內塊元素和塊級元素

1、什么是行內元素&#xff0c;什么是行內塊元素&#xff0c;什么是塊級元素行內元素的特點&#xff1a;不獨占一行&#xff0c;相鄰元素會在同一行顯示&#xff0c;直到一行排不下才換行。寬度和高度由內容本身決定&#xff0c;無法通過width&#xff0c;height手動設置&#…

?絡請求Axios的概念和作用

Axios 是一個基于 ??Promise?? 的輕量級、高性能 ??HTTP 客戶端庫??&#xff0c;主要用于在瀏覽器和 Node.js 環境中發起 HTTP 請求&#xff08;如 GET、POST、PUT、DELETE 等&#xff09;。它通過簡潔的 API 和強大的功能&#xff0c;簡化了前端與后端之間的數據交互過…

在AgentScope中實現結構化輸出

在AgentScope中實現結構化輸出 概述 在AgentScope框架中&#xff0c;結構化輸出功能允許開發者定義明確的輸出模式&#xff0c;確保AI模型的響應符合預期的格式和約束。本教程將介紹如何使用AgentScope的structured_model參數來實現結構化輸出。 結構化輸出的優勢 數據一致性&a…

Linux 磁盤I/O高占用進程排查指南:從定位到分析的完整流程

在Linux服務器運維工作中&#xff0c;磁盤I/O瓶頸是導致系統性能下降的常見原因之一。當服務器出現響應緩慢、應用卡頓等問題時&#xff0c;及時定位并解決高I/O占用進程就顯得尤為重要。本文將從核心思路出發&#xff0c;通過“確認問題-定位磁盤-鎖定進程-深入分析”四個步驟…

解決React中通過外部引入的css/scss/less文件更改antDesign中Modal組件內部的樣式不生效問題

不生效原因Ant Design 的 Modal 默認通過 ReactDOM.createPortal 掛在 <body> 下&#xff0c;與你的組件樹平級&#xff0c;所以寫在 .module.css / scoped less 里的選擇器根本匹配不到它&#xff0c;就算寫全局樣式&#xff0c;也可能因為權重不足或異步掛載時機而“看…

day41 51單片機最小系統、GPIO控制、時序邏輯器件(74HC138/595)與LED點陣驅動原理

day41 51單片機最小系統、GPIO控制、時序邏輯器件&#xff08;74HC138/595&#xff09;與LED點陣驅動原理一、嵌入式系統基礎概念 1.1 嵌入式系統定義先設計硬件&#xff0c;基于硬件設計軟件實現一個具體的功能 —— 專用的計算機系統硬件/軟件可剪裁&#xff1a;根據功能需求…

html列表總結補充

1.有序列表的type屬性不同的type值表示不同的排序標號1 表示列表項目用數字標號&#xff08;1,2,3...&#xff09; 1 a 表示列表項目用小寫字母標號&#xff08;a,b,c...&#xff09; 2 A 表示列表項目用大寫字母標號&#xff08;A,B,C...&#xff09; 3 i 表示列表項目用小寫羅…

smartctl Current_Pending_Sector 硬盤待處理扇區

smartctl -a /dev/sdae當前值: 312 個待處理扇區 嚴重警告信號&#xff0c;硬盤發現了 312 個可疑扇區&#xff0c;正在等待重新分配 197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 312讀取錯誤頻發 錯誤計數: 38 次 ATA 錯誤 …

MATLAB1-基本操作和矩陣輸入-臺大郭彥甫

目錄 基礎的指令 format 矩陣和向量 找出某行某列的矩陣元素 快速打出多個矩陣或者向量 矩陣連接 矩陣計算 一些特殊矩陣fuction 矩陣相關函數 基礎的指令 clc 清空命令行窗口 clear all 清空工作區的全部變量 who 將工作區的全部變量顯示出來 whos 工作區的變量信息詳…

【CSS 3D 交互】實現精美翻牌效果:從原理到實戰

效果圖 前言 在現代網頁設計中&#xff0c;交互效果是提升用戶體驗的重要手段。3D 翻牌效果作為一種常見的交互模式&#xff0c;廣泛應用于卡片展示、問答切換、產品詳情等場景。本文將詳細介紹如何使用 CSS 3D 技術實現一個精美的翻牌效果&#xff0c;并深入解析其實現原理。…

Python核心技術開發指南(062)——靜態方法

版權聲明 本文原創作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 靜態方法的定義 靜態方法是類中定義的一種特殊方法,它不需要依賴類實例或類本身即可調用,也不隱含傳遞self(實例引用)或cls(類引用)參數。在Python中,通過@staticmethod裝飾器來定義靜態…

炒股進階理論知識

學完前面的《從零開始學炒股》這樣的入門課程后&#xff0c;你已經有了一個基本的框架&#xff0c;接下來需要做的是深化、拓展和建立自己的交易系統。以下是為你量身定制的后續學習路徑和理論知識建議&#xff0c;分為幾個核心模塊&#xff1a;模塊一&#xff1a;技術分析的深…

華為OD機試真題-跳馬-OD統一考試(C卷)

題目描述: 馬是象棋(包括中國象棋和國際象棋)中的棋子,走法是每步直一格再斜一格,即先橫著或直著走一格,然后再斜著走一個對角線,可進可退,可越過河界,俗稱“馬走‘日’字。 給頂m行n列的棋盤(網格圖),棋盤上只有有棋子象棋中的棋子“馬”,并且每個棋子有等級之分,…

PyTorch 模型保存與加載 (速查版)

文章目錄1. 推理用: 保存 & 加載權重 (最常見)2. 繼續訓練用: 保存 & 加載完整狀態3. 微調用: 部分加載 (分類頭不同等情況)1. 推理用: 保存 & 加載權重 (最常見) import torch import torch.nn as nnmodel nn.Linear(10, 2)# 保存權重 torch.save(model.state_d…

oneshape acad數據集 sam-dataset

Full Text Search - Hugging Face sketchai (Sketch AI)

0913刷題日記

今日計劃10道1/10兩眼一睜就是刷209. 長度最小的子數組target 396893380 超時頭疼看下題解我的問題在于&#xff0c;中間有一個又寫了一個遍歷&#xff0c;思路和滑動窗口差不多&#xff0c;但是那個遍歷就把時間倍數了。頭疼還能做題&#xff0c;你很棒了,身體健康最重要。沒…

【JAVA】網絡編程

引言 在學習網絡編程之前&#xff0c;我們編寫的程序幾乎都是“單機版”的——只能在本地運行&#xff0c;自娛自樂&#xff0c;無法與其他主機&#xff08;用戶&#xff09;進行交互。 有些同學可能會產生誤解&#xff1a;既然 Java 號稱“一次編譯&#xff0c;到處運…

HTML標簽關系詳解:構建網頁的骨架結構

前言 在上一篇教程中&#xff0c;我們學習了HTML5的基本結構。今天&#xff0c;讓我們深入探討HTML標簽之間的關系。理解HTML標簽之間的關系對于構建結構清晰、語義明確的網頁至關重要。就像在現實生活中&#xff0c;建筑物的各個部分需要按照一定的規則組合在一起一樣&#x…

238 除自身以外數組的的乘積

我的解法&#xff08;沒頭緒&#xff0c;參考AI的思路&#xff09; 好奇怪啊&#xff0c;這個題目&#xff0c;沒什么思路 題目的主要難點是&#xff0c;如何通過這個線性運算得出所有的乘積和&#xff0c;同時不適用除法。 問了下AI&#xff0c;這種題目我可以從什么方向入手&…