why is langchain output not just the answer?

140 views Asked by At

I'm making a question and answer system with retrievalQA langchain. However, the resulting output is not just an answer. how to display only answers? is there something wrong in writing my code?

from langchain.schema import Document
import json
from typing import Iterable
import os

def load_from_json(file_path)->Iterable[Document]:
    array = []
    with open(file_path, 'r') as json_file:
        for line in json_file:
            data = json.loads(line)
            obj = Document(**data)
            array.append(obj)
    return array

docs = load_from_json('/content/drive/dataset.json')

from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size = 1000,
    chunk_overlap  = 100,
    length_function = len,
    is_separator_regex = False,
)
char_splits= text_splitter.split_documents(docs)

from langchain_community.embeddings import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings()

import joblib
loaded_db = joblib.load('/content/drive/Db/db_1000_100.joblib')

import os
from langchain.llms import HuggingFaceHub
os.environ["HUGGINGFACEHUB_API_TOKEN"] = "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"
repo_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
llm = HuggingFaceHub(
    repo_id=repo_id, model_kwargs={"temperature": 0.5, "max_length": 512}
)

from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
prompt_template = """Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.

{context}

Question: {question}
Answer in Indonesian:"""
PROMPT = PromptTemplate(
    template=prompt_template, input_variables=["context", "question"]
)
chain_type_kwargs = {"prompt": PROMPT}
qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever, chain_type_kwargs=chain_type_kwargs)
query = "Apa itu intervensi gizi spesifik?"
qa.run(query)

here is the code and the resulting output

The resulting output is like this : Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.\n\ndan inovasi intervensi kesehatan, dan evaluasi sistem kesehatan untuk mendukung pencapaian prioritas nasional.\n\n50\n\nIntervensi Gizi Sensitif\n\nTabel 11. Kinerja Intervensi pada Lokasi Prioritas menurut Output Intervensi Gizi Sensitif, TA 2019\n\n(Jumlah Kabupaten/Kota)\n\nKinerja dari 10 Intervensi Gizi Spesifik pada lokasi prioritas\n\nTabel 10 menunjukkan kinerja intervensi pada lokasi prioritas menurut output intervensi gizi spesifik pada tahun 2019. Beberapa output pada jenis intervensi gizi spesifik yang akan dianalisis lebih lanjut, yakni 6 output terkait intervensi PMT dan suplemen gizi, 2 output terkait intervensi pengendalian dan penurunan gizi, serta 2 output terkait intervensi kefarmasian dan alat kesehatan. Secara umum, sebagian besar intervensi output tersebut dilakukan di hampir atau seluruh 160 kabupaten/kota prioritas program.\n\ndan UNFPA, bekerja sama dengan instansi pemerintah: Kementerian Sosial, Kementerian Kesehatan, dan BKKBN.\n\nQuestion: Apa itu intervensi gizi spesifik?\nAnswer in Indonesian: Intervensi gizi spesifik adalah upaya tertentu yang dilakukan untuk mengatasi masalah gizi yang spesifik, seperti intervensi PMT dan suplemen gizi, intervensi pengendalian dan penurunan gizi, serta intervensi kefarmasian dan alat kesehatan.

what I expected was like this: Answer in Indonesian: Intervensi gizi spesifik adalah upaya tertentu yang dilakukan untuk mengatasi masalah gizi yang spesifik, seperti intervensi PMT dan suplemen gizi, intervensi pengendalian dan penurunan gizi, serta intervensi kefarmasian dan alat kesehatan.

1

There are 1 answers

0
j3ffyang On

Suggest that you can enable the debug mode to print out all chains

from langchain.globals import set_verbose, set_debug
set_debug(True)
set_verbose(True)

where you can find out where the additional context comes from