texts = [doc.page_content for doc in documents] 属性错误:'bytes' 对象没有 'page_content' 属性
我写了这段代码,运行的时候出现了这个错误:
AttributeError: 'bytes'对象没有'page_content'这个属性
怎么解决这个属性错误:
AttributeError: 'bytes'对象没有'page_content'这个属性
from langchain.prompts import ChatPromptTemplate
from langchain_community.chat_models import ChatOllama
from langchain.embeddings import SentenceTransformerEmbeddings
import streamlit as st
from langchain.vectorstores import Chroma
from langchain.embeddings import SentenceTransformerEmbeddings
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
# Initialize the chat model
model_local = ChatOllama(model="mistral")
# Define function to load document
def load_document(c_file):
if c_file is not None:
file_contents = c_file.read()
return file_contents
else:
return None
# Define function to generate response
def generate_response(query, document):
if document:
documents = [document]
embeddings = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
vectorstore = Chroma.from_documents(documents, embeddings)
retriever = vectorstore.as_retriever()
after_rag_template = """Answer the question based only on the following context:
{context}
Question: {question}
"""
after_rag_prompt = ChatPromptTemplate.from_template(after_rag_template)
after_rag_chain = (
{"context": retriever, "question": RunnablePassthrough()}
| after_rag_prompt
| model_local
| StrOutputParser()
)
response = after_rag_chain.invoke(query)
return response
else:
return "Please upload a C file."
# Define the Streamlit app
def main():
st.set_page_config(page_title="Unit Test Case Generator",
layout="centered")
#st.title("Unit Test Case Generator")
# Sidebar for uploading C file
st.sidebar.title("Upload C File")
c_file = st.sidebar.file_uploader("Choose a C file", type=["c"])
# Text box for entering query
query = st.text_area("Enter your query:")
# Submit button
if st.button("Submit") and query:
document = load_document(c_file)
response = generate_response(query, document)
st.subheader("Generated Output C File:")
if response:
st.code(response, language='c')
else:
st.warning("No response generated.")
if __name__ == "__main__":
main()
这是一个Python脚本,用来创建一个Streamlit网页应用,目的是生成C语言文件的单元测试用例。
1 个回答
0
看起来你想读取的对象是以字节编码的。
你试过用 my_object.decode()
吗?或者用 json.loads(my_object.decode())
?
可以用
texts = [json.loads(doc.decode()).page_content for doc in documents]
来替代
texts = [doc.page_content for doc in documents]
json.loads() 是把一个字符串转换成对象的工具。
str.decode() 是把字节编码的字符串转换成普通字符串的工具。
注意:我无法读取或搜索你的代码,所以这只是个大概的建议。能不能把你的代码以文本形式插入,而不是图片?那样会更容易使用。