LangChain adalah kerangka kerja yang membantu Anda menggunakan LM (Bahasa Besar) dengan nyaman.
LangChain Basic menjelaskan kode contoh untuk setiap konfigurasi LangChain.
Menjelaskan cara menerapkan LangChain ke Titik Akhir SageMaker yang dibuat dengan Falcon FM. Gunakan Titik Akhir SageMaker (mis. jumpstart-dft-hf-llm-falcon-7b-instruct-bf16) yang diperoleh dari Menginstal Falcon FM dengan SageMaker JumpStart.
Mengacu pada input dan output Falcon, daftarkan transform_input dan transform_output dari ContentHandler seperti yang ditunjukkan di bawah ini.
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" ]
Daftarkan llm untuk Sagemaker Endpoint menggunakan endpoint_name, aws_region, parameter, dan content_handler seperti yang ditunjukkan di bawah ini.
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
)
Anda dapat memeriksa pengoperasian llm sebagai berikut.
llm ( "Tell me a joke" )
Hasil saat ini adalah sebagai berikut.
I once told a joke to a friend, but it didn't work. He just looked
Pemuat web - Anda dapat memuat halaman web menggunakan langchain.
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 ])
Setelah mendefinisikan template seperti yang ditunjukkan di bawah ini, Anda dapat mendefinisikan LLMChain dan menjalankannya. Lihat langchain-sagemaker-endpoint-Q&A.ipynb untuk detailnya.
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 )
Hasil saat ini adalah sebagai berikut.
Why did the chicken cross the playground? To get to the other slide!
Tanya jawab pada dokumen dilakukan dengan menggunakan langchain.chains.question_answering. Lihat langchain-sagemaker-endpoint-Q&A.ipynb untuk detailnya.
Mendefinisikan templat prompt.
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" ]
)
Buat dokumen menggunakan 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 ,
)
]
Sekarang lakukan Tanya/Jawab.
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 )
Hasil saat ini adalah sebagai berikut.
{'output_text': ' 3 days'}
langchain-sagemaker-endpoint-pdf-summary.ipynb menjelaskan cara melakukan PDF Summery dengan SageMaker Endpoint berdasarkan Falcon FM.
Pertama, baca file PDF yang disimpan di S3 menggunakan PyPDF2 dan ekstrak teksnya.
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 " , " " )
Karena dokumennya besar, gunakan RecursiveCharacterTextSplitter untuk memisahkannya menjadi beberapa bagian dan menyimpannya di Dokumen. Setelah itu, rangkum menggunakan load_summarize_chain.
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" ))
Dokumen LangChain
LangChain - github.dll
Titik Akhir SageMaker
2-Lab02-RAG-LLM
Ekstensi AWS Kendra Langchain
QA dan Obrolan melalui Dokumen
LangChain - Modul - Model bahasa - LLM - Integrasi - SageMakerEndpoint
LangChain - Ekosistem - Integrasi - Titik Akhir SageMaker
Menyerap data basis pengetahuan ke Vector DB