当前位置: 首页 > news >正文

做门户网站2023年8月份新冠

做门户网站,2023年8月份新冠,游戏服务器搭建 开服,wordpress server error昨天写了一篇文章,使用fastapi直接操作neo4j图数据库插入数据的例子, 本文实现LLM大模型结合neo4j图数据库实现AI问答功能。 废话不多说,先上代码 import gradio as gr from fastapi import FastAPI, HTTPException, Request from pydantic…

昨天写了一篇文章,使用fastapi直接操作neo4j图数据库插入数据的例子, 本文实现LLM大模型结合neo4j图数据库实现AI问答功能。

废话不多说,先上代码

import gradio as gr
from fastapi import FastAPI, HTTPException, Request
from pydantic import BaseModel
from langchain_openai import ChatOpenAI
from langchain.prompts import (ChatPromptTemplate,MessagesPlaceholder,SystemMessagePromptTemplate,HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.memory import ConversationBufferMemory
from langchain_community.graphs import Neo4jGraph
from langchain.chains import GraphCypherQAChain
import asyncio
from typing import List
import json# Initialize FastAPI
app = FastAPI()# Initialize Neo4j with timeout
try:graph = Neo4jGraph(url="bolt://localhost:7687",username="neo4j",password="password",database="neo4j",timeout=60  # 60 seconds timeout)
except Exception as e:print(f"Failed to connect to Neo4j: {e}")graph = None# Fallback in-memory storage
job_seekers = []
job_positions = []# Initialize LangChain components
llm = ChatOpenAI(temperature=0.95,model="glm-4-flash",openai_api_key="xxxxxx",openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)prompt = ChatPromptTemplate(messages=[SystemMessagePromptTemplate.from_template("You are a helpful AI assistant for a recruitment company. You can answer questions about job seekers and available positions."),MessagesPlaceholder(variable_name="chat_history"),HumanMessagePromptTemplate.from_template("{question}")]
)memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
conversation = LLMChain(llm=llm,prompt=prompt,verbose=True,memory=memory
)# Initialize GraphCypherQAChain if Neo4j is available
if graph:graph_qa = GraphCypherQAChain.from_llm(llm,graph=graph,verbose=True)# Define chat function with timeout
async def chat_with_timeout(message, history):try:if graph:neo4j_response = await asyncio.wait_for(asyncio.to_thread(graph_qa.run, message),timeout=10.0  # 10 seconds timeout)return f"Based on our database: {neo4j_response}"else:# Fallback to in-memory dataif "job seekers" in message.lower():return f"Based on our records: We have {len(job_seekers)} job seekers."elif "job positions" in message.lower():return f"Based on our records: We have {len(job_positions)} job positions."else:response = conversation.invoke({"question": message})return response['text']except asyncio.TimeoutError:return "I'm sorry, but the database query took too long. Please try a simpler question or try again later."except Exception as e:print(f"Error in chat function: {e}")response = conversation.invoke({"question": message})return response['text']# # Create Gradio interface
iface = gr.ChatInterface(chat_with_timeout)
#
# # Mount Gradio app to FastAPI
app = gr.mount_gradio_app(app, iface, path="/")# Run the app
if __name__ == "__main__":import uvicornuvicorn.run(app, host="0.0.0.0", port=8000)

还是老规矩,先AI解释下,构建一个基于FastAPI和Gradio的聊天应用,主要功能如下:

1、初始化FastAPI应用和Neo4j图数据库连接(带超时处理);

2、定义了用于对话的LangChain组件,包括LLM模型、提示模板及对话记忆;

3、根据Neo4j是否可用初始化图查询链;

4、实现异步聊天函数,支持数据库查询数据检索,并处理超时错误;

5、使用Gradio创建用户界面并将应用挂载到FastAPI上。

核心关注graph_qa.run方法,执行原理:

  1. 自然语言处理:

当调用 graph_qa.run(message) 时,首先会将用户的自然语言查询(message)传递给大语言模型(LLM)。

  1. Cypher 查询生成:

LLM 分析用户的查询,并尝试将其转换为 Cypher 查询语言。Cypher 是 Neo4j 图数据库使用的查询语言。这个步骤涉及到理解用户意图和将其映射到图数据库的结构上。

  1. 数据库查询:

生成的 Cypher 查询被发送到 Neo4j 数据库执行。这个过程涉及到遍历图数据库,匹配节点和关系,并检索相关数据。

  1. 结果解释:

数据库返回查询结果后,这些结果会被传回给 LLM。LLM 会分析这些原始数据,理解其含义和上下文。

  1. 响应生成:

最后,LLM 会根据原始查询和数据库返回的结果,生成一个人类可读的响应。这个响应应该直接回答用户的问题,并可能包含从数据库中提取的具体信息。

在上一篇文章中,我已经在neo4j插入了一些数据,比如张三1的技能。 这里问一下

在这里插入图片描述

原文链接: 【知识图谱】4、LLM大模型结合neo4j图数据库实现AI问答的功能

在这里插入图片描述

http://www.mmbaike.com/news/23115.html

相关文章:

  • 南充网站建设价格久久seo正规吗
  • 最新网页游戏公益服重庆企业站seo
  • 网站当前位置 样式手游推广平台代理
  • 建设中网站首页关键词优化搜索引擎
  • 做外贸兼职的网站哈尔滨怎样关键词优化
  • wordpress更换域名首页无法访问百度关键词优化专家
  • 镇江网站建设联系思创企业网站怎么建立
  • 可以个人做单的猎头网站如何免费做网站
  • 工作室 网站建设广告资源发布平台
  • 网络工程专业毕业生设计整站优化 快速排名
  • 福州小学网站建设百度关键词是怎么排名靠前
  • 网站做软件有哪些指数运算法则
  • 制作网站吗如何线上推广自己产品
  • 注册个网站要多少钱成品网站1688入口网页版
  • 网站建设后期需要后期做的个人网站seo
  • 一个网站收录很高 但外链很少是什么原因怎么成为百度推广代理商
  • 深圳网站建设忧化提高网站排名
  • 信息发布网站设计seo需要付费吗
  • 网站建设历程软文新闻发布平台
  • 建设部城管局网站色盲怎么治疗
  • 时时彩网站开发需要多少钱免费seo网站
  • 网站首页布局修改职业技能培训有哪些
  • 陕西企业网站建设价格googleplay商店
  • 千博企业网站管理系统完整版 2014丹东seo推广优化报价
  • 北京网站关键词优化关键词有哪几种
  • 宜昌便宜做网站青岛网站建设公司电话
  • 网站开发综合实训总结新手电商运营从哪开始学
  • 红光网站建设网站排名大全
  • 网站开发未按合同约定工期完工谷歌网站网址
  • 西安小公司网站建设cilimao磁力猫