LangChain ist ein Framework, das Ihnen bei der bequemen Verwendung von LM (Large Language) hilft.
LangChain Basic erklärt Beispielcode für jede Konfiguration von LangChain.
Beschreibt, wie LangChain auf einen mit Falcon FM erstellten SageMaker-Endpunkt angewendet wird. Verwenden Sie den SageMaker-Endpunkt (z. B. jumpstart-dft-hf-llm-falcon-7b-instruct-bf16), den Sie unter „Installieren von Falcon FM mit SageMaker JumpStart“ erhalten haben.
Beziehen Sie sich auf die Eingabe und Ausgabe von Falcon und registrieren Sie transform_input und transform_output von ContentHandler wie unten gezeigt.
from langchain import PromptTemplate , SagemakerEndpoint
from langchain . llms . sagemaker_endpoint import LLMContentHandler
class ContentHandler ( LLMContentHandler ):
content_type = "application/json"
accepts = "application/json"
def transform_input ( self , prompt : str , model_kwargs : dict ) -> bytes :
input_str = json . dumps ({ 'inputs' : prompt , 'parameters' : model_kwargs })
return input_str . encode ( 'utf-8' )
def transform_output ( self , output : bytes ) -> str :
response_json = json . loads ( output . read (). decode ( "utf-8" ))
return response_json [ 0 ][ "generated_text" ]
Registrieren Sie den llm für Sagemaker Endpoint mit endpoint_name, aws_region, Parametern und content_handler, wie unten gezeigt.
endpoint_name = 'jumpstart-dft-hf-llm-falcon-7b-instruct-bf16'
aws_region = boto3 . Session (). region_name
parameters = {
"max_new_tokens" : 300
}
content_handler = ContentHandler ()
llm = SagemakerEndpoint (
endpoint_name = endpoint_name ,
region_name = aws_region ,
model_kwargs = parameters ,
content_handler = content_handler
)
Sie können die Funktion von llm wie folgt überprüfen.
llm ( "Tell me a joke" )
Die Ergebnisse sind zu diesem Zeitpunkt wie folgt.
I once told a joke to a friend, but it didn't work. He just looked
Webloader – Sie können Webseiten mit Langchain laden.
from langchain . document_loaders import WebBaseLoader
from langchain . indexes import VectorstoreIndexCreator
loader = WebBaseLoader ( "https://lilianweng.github.io/posts/2023-06-23-agent/" )
index = VectorstoreIndexCreator (). from_loaders ([ loader ])
Nachdem Sie die Vorlage wie unten gezeigt definiert haben, können Sie LLMChain definieren und ausführen. Weitere Informationen finden Sie unter langchain-sagemaker-endpoint-Q&A.ipynb.
from langchain import PromptTemplate , LLMChain
template = "Tell me a {adjective} joke about {content}."
prompt = PromptTemplate . from_template ( template )
llm_chain = LLMChain ( prompt = prompt , llm = llm )
outputText = llm_chain . run ( adjective = "funny" , content = "chickens" )
print ( outputText )
Die Ergebnisse sind zu diesem Zeitpunkt wie folgt.
Why did the chicken cross the playground? To get to the other slide!
Fragen/Antworten für das Dokument werden mit langchain.chains.question_answering durchgeführt. Weitere Informationen finden Sie unter langchain-sagemaker-endpoint-Q&A.ipynb.
Definiert die Vorlage der Eingabeaufforderung.
template = """Use the following pieces of context to answer the question at the end.
{context}
Question: {question}
Answer:"""
prompt = PromptTemplate (
template = template , input_variables = [ "context" , "question" ]
)
Erstellen Sie ein Dokument mit langchain.docstore.document.
from langchain . docstore . document import Document
example_doc_1 = """
Peter and Elizabeth took a taxi to attend the night party in the city. While in the party, Elizabeth collapsed and was rushed to the hospital.
Since she was diagnosed with a brain injury, the doctor told Peter to stay besides her until she gets well.
Therefore, Peter stayed with her at the hospital for 3 days without leaving.
"""
docs = [
Document (
page_content = example_doc_1 ,
)
]
Führen Sie nun Fragen/Antworten durch.
from langchain . chains . question_answering import load_qa_chain
question = "How long was Elizabeth hospitalized?"
chain = load_qa_chain ( prompt = prompt , llm = llm )
output = chain ({ "input_documents" : docs , "question" : question }, return_only_outputs = True )
print ( output )
Die Ergebnisse sind zu diesem Zeitpunkt wie folgt.
{'output_text': ' 3 days'}
langchain-sagemaker-endpoint-pdf-summary.ipynb erklärt, wie man PDF Summery mit SageMaker Endpoint basierend auf Falcon FM erstellt.
Lesen Sie zunächst die in S3 gespeicherte PDF-Datei mit PyPDF2 und extrahieren Sie den Text.
import PyPDF2
from io import BytesIO
sess = sagemaker . Session ()
s3_bucket = sess . default_bucket ()
s3_prefix = 'docs'
s3_file_name = '2016-3series.pdf' # S3의 파일명
s3r = boto3 . resource ( "s3" )
doc = s3r . Object ( s3_bucket , s3_prefix + '/' + s3_file_name )
contents = doc . get ()[ 'Body' ]. read ()
reader = PyPDF2 . PdfReader ( BytesIO ( contents ))
raw_text = []
for page in reader . pages :
raw_text . append ( page . extract_text ())
contents = ' n ' . join ( raw_text )
new_contents = str ( contents ). replace ( " n " , " " )
Da das Dokument groß ist, verwenden Sie RecursiveCharacterTextSplitter, um es in Blöcke zu unterteilen und im Dokument zu speichern. Fassen Sie anschließend mit „load_summarize_chain“ zusammen.
from langchain . text_splitter import CharacterTextSplitter
from langchain . text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter ( chunk_size = 1000 , chunk_overlap = 0 )
texts = text_splitter . split_text ( new_contents )
from langchain . docstore . document import Document
docs = [
Document (
page_content = t
) for t in texts [: 3 ]
]
from langchain . chains . summarize import load_summarize_chain
from langchain . prompts import PromptTemplate
prompt_template = """Write a concise summary of the following:
{text}
CONCISE SUMMARY """
PROMPT = PromptTemplate ( template = prompt_template , input_variables = [ "text" ])
chain = load_summarize_chain ( llm , chain_type = "stuff" , prompt = PROMPT )
summary = chain . run ( docs )
from langchain import Bedrock
from langchain . embeddings import BedrockEmbeddings
llm = Bedrock ()
print ( llm ( "explain GenAI" ))
LangChain-Dokumente
LangChain – Github
SageMaker-Endpunkte
2-Lab02-RAG-LLM
AWS Kendra Langchain-Erweiterungen
Qualitätssicherung und Chat über Dokumente
LangChain – Module – Sprachmodelle – LLMs – Integration – SageMakerEndpoint
LangChain – Ökosystem – Integration – SageMaker Endpoint
Wissensdatenbankdaten in Vector DB aufnehmen