- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我修改了这个源代码的数据加载器https://github.com/techleadhd/chatgpt-retrieval让 ConversationalRetrievalChain 接受 JSON 数据。
我创建了一个虚拟 JSON 文件,根据 LangChain 文档,它符合文档中描述的 JSON 结构。
{
"reviews": [
{"text": "Great hotel, excellent service and comfortable rooms."},
{"text": "I had a terrible experience at this hotel. The room was dirty and the staff was rude."},
{"text": "Highly recommended! The hotel has a beautiful view and the staff is friendly."},
{"text": "Average hotel. The room was okay, but nothing special."},
{"text": "I absolutely loved my stay at this hotel. The amenities were top-notch."},
{"text": "Disappointing experience. The hotel was overpriced for the quality provided."},
{"text": "The hotel exceeded my expectations. The room was spacious and clean."},
{"text": "Avoid this hotel at all costs! The customer service was horrendous."},
{"text": "Fantastic hotel with a great location. I would definitely stay here again."},
{"text": "Not a bad hotel, but there are better options available in the area."}
]
}
代码是:
import os
import sys
import openai
from langchain.chains import ConversationalRetrievalChain, RetrievalQA
from langchain.chat_models import ChatOpenAI
from langchain.document_loaders import DirectoryLoader, TextLoader
from langchain.embeddings import OpenAIEmbeddings
from langchain.indexes import VectorstoreIndexCreator
from langchain.indexes.vectorstore import VectorStoreIndexWrapper
from langchain.llms import OpenAI
from langchain.vectorstores import Chroma
from langchain.document_loaders import JSONLoader
os.environ["OPENAI_API_KEY"] = 'YOUR_API_KEY_HERE'
# Enable to save to disk & reuse the model (for repeated queries on the same data)
PERSIST = False
query = None
if len(sys.argv) > 1:
query = sys.argv[1]
if PERSIST and os.path.exists("persist"):
print("Reusing index...\n")
vectorstore = Chroma(persist_directory="persist", embedding_function=OpenAIEmbeddings())
index = VectorStoreIndexWrapper(vectorstore=vectorstore)
else:
loader = JSONLoader("data/review.json", jq_schema=".reviews[]", content_key='text') # Use this line if you only need data.json
if PERSIST:
index = VectorstoreIndexCreator(vectorstore_kwargs={"persist_directory":"persist"}).from_loaders([loader])
else:
index = VectorstoreIndexCreator().from_loaders([loader])
chain = ConversationalRetrievalChain.from_llm(
llm=ChatOpenAI(model="gpt-3.5-turbo"),
retriever=index.vectorstore.as_retriever()
)
chat_history = []
while True:
if not query:
query = input("Prompt: ")
if query in ['quit', 'q', 'exit']:
sys.exit()
result = chain({"question": query, "chat_history": chat_history})
print(result['answer'])
chat_history.append((query, result['answer']))
query = None
一些结果示例是:
Prompt: can you summarize the data?
Sure! Based on the provided feedback, we have a mix of opinions about the hotels. One person found it to be an average hotel with nothing special, another person had a great experience with excellent service and comfortable rooms, another person was pleasantly surprised by a hotel that exceeded their expectations with spacious and clean rooms, and finally, someone had a disappointing experience with an overpriced hotel that didn't meet their expectations in terms of quality.
Prompt: how many feedbacks present in the data ?
There are four feedbacks present in the data.
Prompt: how many of them are positive (sentiment)?
There are four positive feedbacks present in the data.
Prompt: how many of them are negative?
There are three negative feedbacks present in the data.
Prompt: how many of them are neutral?
Two of the feedbacks are neutral.
Prompt: what is the last review you can see?
The most recent review I can see is: "The hotel exceeded my expectations. The room was spacious and clean."
Prompt: what is the first review you can see?
The first review I can see is "Highly recommended! The hotel has a beautiful view and the staff is friendly."
Prompt: how many total texts are in the JSON file?
I don't know the answer.
我可以用我的数据聊天,但除了第一个答案之外,所有其他答案都是错误的。
JSONloader 或 jq_scheme 是否有问题?如何调整代码以便生成预期的输出?
最佳答案
在 ConversationalRetrievalChain
中,搜索设置为默认 4,请参阅 ../langchain/chains/conversational_retrieval/base.py 中的 top_k_docs_for_context: int = 4
。
这是有道理的,因为您不想将所有向量发送到 LLM 模型(也有相关成本)。根据用例,您可以使用以下命令将默认值更改为更易于管理:
chain = ConversationalRetrievalChain.from_llm(
llm=ChatOpenAI(model="gpt-3.5-turbo"),
retriever=index.vectorstore.as_retriever(search_kwargs={"k": 10})
)
通过此更改,您将得到结果
{'question': 'how many feedbacks present in the data ?',
'chat_history': [],
'answer': 'There are 10 pieces of feedback present in the data.'}
关于python - 使用 JSONloader 进行 LangChain 对话检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76670856/
当我创建一个 JSON 模型并使用 THREE.JSONLoader.load 加载它时,它的加载没有任何问题,但是当我尝试从中创建一个变量并将数据包含在主脚本中时,THREE.JSONLoader.
我不是 blender 专家(我得到了这个模型),我将它导出到JS,但纹理没有显示。当我删除纹理文件时,浏览器会给出一个错误,指出未找到“map.png”,因此它会加载,但不会显示它。 代码已上线:h
任何人都可以建议加载多个模型(从 blender 导出为 JSON 格式)的最佳方法是什么吗? 在下面的示例中,我使用的是 static_objects 数组,其中填充了一些预定义的对象数据,这也是存
我在 Blender 中制作了一个带有纹理的形状并将其导出。然后用 json loader 显示它。几乎一切都很好,几何形状很好,你可以在形状上看到纹理,但没有颜色。只是黑色和白色。如何显示纹理颜色?
现在 JSONLoader 已经被移除了,之前 JSONLoader 加载的模型怎么加载呢? 最佳答案 是的,JSONLoader已从 three.js 中删除与 R99 .但是加载器仍然可用 Leg
我下面有一个json编码的数据需要用pig解析。 {"arr":[1,2,3,4]} 根据 http://help.mortardata.com/technologies/pig/json#toc_4
我有 jsons,我想将它加载到 pig。每个 json 看起来像这样: {"timeStamp":1397718396509,"requestUid":"534F7D320007","result"
是否可以将从 blender 导出的场景(例如两个不同的立方体)加载到 json 并识别它们? 我需要区分它们,例如使一个旋转,另一个移动。 提前致谢! 登维 编辑+++ 谢谢您的回答! 所以如果我在
只是看不到导入到 three.js 场景中的模型。几何图形看起来不错,但无论我应用什么 Material ,模型都不会显示。 我是 WebGL 的新手,所以我很难诊断,但我猜是 JSONLoader
我正在尝试使用 THREE.JSONLoader 加载 JSON 文件。该文件不是 JSON 模型,而只是一个带有坐标的文件。 理想情况下,我正在尝试这样做: var loader = new THR
我正在使用 raycaster 查看我是否用鼠标(或触摸)击中了一个网格物体很薄,我可以增加任何可以与射线相交的大小。与游戏对象一样,(使用 three.js)我可以添加自己的碰撞网格,它显然不会渲染
当我处理重型模型时,我试图在加载 JSON 时动态显示加载百分比,因此我使用 loadAjaxJSON method 进行了粗略测试。 ... 下面的加载返回加载期间的百分比,但永远不会到达回调函数。
即使我已经有了computeVertexNormals,模型也始终显示在FlatShading中。模型以非法线导出进行优化,通过JsonLoader加载到3JS中,并转换为BufferGeometry
我正在使用 Three.js,在其中创建了一个对象。我创建了一些按钮,并且可以通过单击专用按钮来更改对象的 Material 颜色。 问题是:如何使用纹理 Material 完成相同的过程,因此如果我
我有以下需要使用 Pig 解析的数据 数据 { "Name": "BBQ Chicken", "Sizes": [ { "Size": "Large", "Price"
我修改了这个源代码的数据加载器https://github.com/techleadhd/chatgpt-retrieval让 ConversationalRetrievalChain 接受 JSON
我修改了这个源代码的数据加载器https://github.com/techleadhd/chatgpt-retrieval让 ConversationalRetrievalChain 接受 JSON
我正在尝试使用 Three.js 设置一个非常简单的场景,显示一个导入的网格旋转。我结合了 Three.js 文档中的几个示例并得出以下代码: var scene, camera, renderer;
在 blender 中制作房屋模型后,我将其作为单个对象导出为 Three.js json 格式,但将其添加到场景时,我显示了一半纹理,另一半只是灰色网格。 JSON URL(带有绝对纹理图像链接):
我正在使用 three.js 的 JSONLoader() 加载模型。加载工作正常,但模型看起来有点奇怪。我猜这是因为它会自动使用平滑着色而不是平面着色。我尝试了几种应用平面阴影的方法,但都没有用。
我是一名优秀的程序员,十分优秀!