neo4j暴露公網ip接口——給大模型聯通知識圖譜

特別鳴謝

我的領導,我的腦子,我的學習能力,感動了

1. 搭建知識圖譜數據庫(見上一章博客)

這里不加贅述了,請參考上一篇博客搭建

2. FastApi包裝接口

這里注意:NEO4J_URI不得寫http:,只能寫neo4j或者bolt
還需要注意APP_HOST不得是127.0.0.1,必須是0.0.0.0,不然只有局域網才能訪問!

這是.env文件:

# app
APP_HOST=0.0.0.0
APP_PORT=8000# neo4j
NEO4J_URI=neo4j://xxxxxx:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=你自己的密碼
NEO4J_VERSION=5
NEO4J_DATABASE=數據庫的名字
NEO4J_PORT=7474# http://127.0.0.1:8000/api/node/search?name=布洛芬
# http://120.26.32.188:8000/api/node/search?name=布洛芬

這是router的查詢相關內容:

#!/usr/bin/python3import logging
from fastapi import APIRouter, status
from fastapi.responses import JSONResponse
from utils.neo4j_provider import asyncDriver
from settings import settingsrouter = APIRouter()# 定義一個根路由
@router.get("/add")
def add_node():# TODO 往 neo4j 里創建新的節點data = {'code': 0,'message': '','data': 'add success'}return JSONResponse(content=data, status_code=status.HTTP_200_OK)@router.route("/search")
async def get_search(q: str = None):if q is None:return []cql = """MATCH (p:商品名稱) WHERE p.name CONTAINS $name RETURN p"""records, _, _ = await asyncDriver.execute_query(cql,name=q.query_params['name'],database_=settings.NEO4J_DATABASE,routing_="r",)# 轉換節點為可序列化的字典serialized_records = []for record in records:node = record["p"]serialized_records.append({"id": node.element_id,"labels": list(node.labels),"properties": dict(node)})return JSONResponse(content=serialized_records, status_code=status.HTTP_200_OK)

這是main.py函數

import logging
from settings import settingsfrom app_init import create_applicationimport colorama# 初始化 colorama 模塊 在控制臺、命令行輸出彩色文字的模塊,可以跨平臺使用
colorama.init(autoreset=True)app = create_application()
# app = FastAPI()if __name__ == "__main__":import uvicornlogging.root.setLevel(logging.DEBUG)logging.info("Starting on  %s:%d ", settings.APP_HOST, settings.APP_PORT)# main:app main下面的 app,相當于注入# main: main.py 文件(也可理解為Python模塊).# app: main.py 中 app = FastAPI()# 語句創建的app對象.# --reload: 在代碼改變后重啟服務器,只能在開發的時候使用uvicorn.run("main:app", host=settings.APP_HOST, port=settings.APP_PORT)

neo4j_provider.py

#!/usr/bin/python3
import osfrom neo4j import GraphDatabase, AsyncGraphDatabase, basic_auth, Driver, AsyncDriver
from settings import settings# Neo4j 數據庫操作類
class Neo4jProvider:"""創建 Neo4j 數據庫連接"""def __init__(self) -> None:# 獲取環境變量值,如果沒有就返回默認值self.url = settings.NEO4J_URIself.username = settings.NEO4J_USERself.password = settings.NEO4J_PASSWORDself.neo4j_version = settings.NEO4J_VERSIONself.database = settings.NEO4J_DATABASEself.port = int(settings.NEO4J_PORT)# 同步驅動def driver(self) -> Driver:print("self.url", self.url)return GraphDatabase.driver(self.url, auth=basic_auth(self.username, self.password))# 異步驅動def async_driver(self) -> AsyncDriver:return AsyncGraphDatabase.driver(self.url, auth=basic_auth(self.username, self.password))
# 同步驅動。暴露給外面調用
driver = Neo4jProvider().driver()
# 異步驅動。暴露給外面調用
asyncDriver = Neo4jProvider().async_driver()

3. 公網ip查詢結果展示

在這里插入圖片描述

4. 與大模型連接效果展示

在這里插入圖片描述
(總結不易,歡迎各位金主爸爸打賞,點贊收藏!)

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

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

相關文章

AI編程新選擇!VSCode + RooCode,超越Cursor?

在當今快節奏的開發環境中,AI編程助手已經成為提升開發效率的關鍵工具。然而,面對眾多選擇,開發者往往陷入糾結:如何在眾多AI編程工具中找到最適合自己的方案?尤其是當VSCode搭配RooCode時,相比Cursor&…

電子病歷高質量語料庫構建方法與架構項目(環境聆聽與自動化文檔生成篇)

電子病歷高質量語料庫的構建是一個復雜而系統的工程,涉及數據收集、清洗、標注、驗證等多個環節。在項目實施過程中,"環境聆聽"和"自動化文檔生成"是兩個關鍵支撐要素,前者確保項目能夠適應不斷變化的技術和業務環境,后者則保障項目過程的可追溯性和知…

Python協程入門指北

一、什么是協程? 協程(Coroutine)就像可以暫停執行的函數,能夠在執行過程中主動讓出控制權,等準備好后再繼續執行。 生活小例子 想象你在咖啡店排隊: 普通函數:必須一直排到取餐&#xff08…

mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz的下載安裝和使用

資源獲取鏈接: mysql-5.7.24-linux-glibc2.12-x86-64.tar.gz和使用說明資源-CSDN文庫 詳細作用 數據庫服務器的核心文件: 這是一個壓縮包,解壓后包含 MySQL 數據庫服務器的可執行文件、庫文件、配置文件模板等。 它用于在 Linux 系統上安裝…

C++筆記-繼承(下)(包含派生類的默認成員函數,菱形繼承等)

一.派生類的默認成員函數 1.14個常見默認成員函數 默認成員函數,默認的意思就是指我們不寫,編譯器會自動為我們生成一個,那么在派生類中,這幾個成員函數是如何生成的呢? 1.派生類的構造函數必須調用基類的構造函數初…

C++中指針使用詳解(3)數組、指針和函數參數傳遞的底層 ABI實現

要深入理解 數組、指針和函數參數傳遞 的底層 ABI(Application Binary Interface)實現,需要從以下幾個維度出發進行學習: 一、什么是 ABI? ABI 是編譯器和操作系統之間的協定,規定了: 函數如何…

【RustDesk 】中繼1:壓力測試 Python 版 RustDesk 中繼服務器

測試 Python 版 RustDesk 中繼服務器 測試我們實現的中繼服務器有幾種方法,從簡單到復雜依次如下: 1. 基本連接測試客戶端 創建一個簡單的測試客戶端來驗證中繼服務器的基本功能: 2. 用兩個測試客戶端測試中繼功能 要測試完整的中繼功能,你需要運行兩個客戶端實例來模擬…

Spring Boot集成Spring Cloud 2024(不使用Feign)

本文介紹Spring Boot集成Spring Cloud 2024,且不使用Feign,而是采用Spring 6自帶的HttpExchange方式進行服務調用的詳細步驟: 環境準備 Spring Boot版本:推薦使用Spring Boot 3.4.1及以上版本,以更好地與Spring Clou…

vue中$set原理

Vue 中的 $set 方法(Vue.set)主要用于 向響應式對象中添加一個新的屬性,并確保這個新屬性是響應式的,能夠觸發視圖更新。 📌 背景問題:為什么需要 $set? 在 Vue 2 中,直接給對象新增…

Superset二次開發之深度解讀系列:1.概述

Apache Superset 是一款現代化的企業級商業智能 Web 應用程序,專為數據探索和可視化而設計。本概述介紹了 Superset 的架構、核心組件和主要功能,以幫助開發人員了解該系統的工作原理。 What is Apache Superset? Apache Superset 是一個開源數據探索…

Linux系統之elfedit詳解

elfedit 是一個用于修改 ELF(可執行與可鏈接格式)文件頭的工具。它允許用戶根據指定的條件(如機器類型、文件類型、操作系統/ABI)匹配并更新 ELF 文件的頭部信息。支持 32 位和 64 位 ELF 文件,以及包含 ELF 文件的歸檔…

前端HTML基礎知識

1.HTML介紹 HTML(HyperText Markup Language,超文本標記語言)是構成網頁的基本元素,是一種用于創建網頁的標準化標記語言。HTML不是一種編程語言,而是一種標記語言,通過標簽來描述網頁的結構和內容。 超文本:超文本是…

【IP101】圖像濾波技術詳解:從均值濾波到高斯濾波的完整指南

🌟 圖像濾波魔法指南 🎨 在圖像處理的世界里,濾波就像是給圖片"美顏"的魔法工具。讓我們一起來探索這些神奇的濾波術吧! 📑 目錄 1. 均值濾波:圖像的"磨皮"大法2. 中值濾波&#xff1…

LINE FRIENDS 正式與 Walrus 合作,全新 AI 驅動的游戲即將上線

風靡全球的 LINE FRIENDS 角色即將以“minini”迷你造型登陸 Walrus,雖然尺寸更小,但承諾帶來“大”動作。IPX(LINE FRIENDS 背后的公司)打造了《minini universe: ROOM》游戲,這是一款基于其 minini 系列角色的多鏈游…

2025年信息素養大賽C++算法創意實踐挑戰賽初賽樣題及答案解析(小學組)

一、選擇題 1、下列代碼&#xff0c;能夠輸出 hello world 的是_____ A. cout (hello world) B. cout << hello world C. cout:hello world D. cout << "hello world"; 答案&#xff1a;D 解析&#xff1a;cout輸出的文本內容要用雙引號引起來 2、…

[c語言日寄]檢查環形鏈表

【作者主頁】siy2333 【專欄介紹】?c語言日寄?&#xff1a;這是一個專注于C語言刷題的專欄&#xff0c;精選題目&#xff0c;搭配詳細題解、拓展算法。從基礎語法到復雜算法&#xff0c;題目涉及的知識點全面覆蓋&#xff0c;助力你系統提升。無論你是初學者&#xff0c;還是…

黃雀在后:外賣大戰新變局,淘寶+餓了么開啟電商大零售時代

當所有人以為美團和京東的“口水戰”硝煙漸散&#xff0c;外賣大戰告一段落時&#xff0c;“螳螂捕蟬&#xff0c;黃雀在后”&#xff0c;淘寶閃購聯合餓了么“閃現”外賣戰場&#xff0c;外賣烽火再度燃起。 4 月30日&#xff0c;淘寶天貓旗下即時零售業務“小時達”正式升級…

如何在uni-app中自定義輸入框placeholder的樣式

在開發uni-app應用時&#xff0c;我們經常需要自定義輸入框&#xff08;<input>&#xff09;的樣式以匹配應用的整體設計。默認情況下&#xff0c;uni-app的輸入框提供了一些基本的樣式選項&#xff0c;但有時候我們需要更細致地控制輸入框的每個部分&#xff0c;例如pla…

使用Node編寫輕量級后端快速入門

使用Node編寫輕量級后端快速入門 node 要作為輕量級后端需要下載一些對應模塊可以參考下面命令。你可以借助 npm&#xff08;Node Package Manager&#xff09;來下載它們。 模塊下載 express&#xff1a;這是一個廣受歡迎的 Node.js Web 應用框架&#xff0c;能用于構建 Web…

從Markdown到專業文檔:如何用Python打造高效格式轉換工具

在技術寫作、學術研究和企業報告領域,Markdown因其簡潔高效的特性廣受開發者喜愛。但當需要輸出正式文檔時,Word和PDF格式仍是行業標準。傳統解決方案往往存在樣式丟失、代碼排版混亂、批量處理困難等痛點。本文將揭秘如何用Python構建一個支持多主題、保留代碼高亮、自動生成…