Twój koszyk jest obecnie pusty!
PromptLayer – czyli zaglądamy w komunikację między LangChain z modelem językowym
W poprzednich artykułach Wprowadzenie do frameworka LangChain oraz Budujemy aplikację do zadawania pytań do PDFów w LangChain i ChatGPT pokazywaliśmy przykłady jak przy pomocy frameworka LangChain zadawać pytania do modelu językowego. Wykorzystywaliśmy przede wszystkim model GPT od OpenAI. Wprowadzaliśmy różne zapytania i komendy do LangChain. Wiemy, że LangChain komunikował się z API Open AI, ale nie wiemy, jakie prompty były wysyłane. Aby podpatrzeć komunikację między LangChain a modelem językowym możemy wykorzystać narzędzie PromptLayer. Zobaczmy, jak przygotować integracje.
Zakładamy konto w PromptLayer
Konto w systemie PromptLayer możemy założyć na stronie: https://promptlayer.com. Do wyboru mamy kilka pakietów, ale co najważniejsze, jest też pakiet darmowy, który pozwoli nam na przetestowanie narzędzia.
Po zalogowaniu musimy utworzyć API Key, klikając duży przycisk: „Create new API Key”. Pamiętaj, aby zapisać klucz i nie udostępniać go nikomu.
Konfigurujemy aplikację
W pierwszym roku musimy zainstalować pakiet:
pip install promptlayer
Wykonajmy kod, który stworzyliśmy we wpisie: Budujemy aplikację do zadawania pytań do PDFów w LangChain i ChatGPT.
from langchain.chains import RetrievalQA
from langchain.llms import PromptLayerOpenAI
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("2305.10973.pdf") # Podmień na ścieżkę do swojego pliku PDF
llm = PromptLayerOpenAI(pl_tags=["langchain-requests", "chatbot"])
text_splitter = RecursiveCharacterTextSplitter(chunk_size=800, chunk_overlap=100) # Aby nie przekroczyć liczby tokenów ChatGPT zmniajszamy domyślny chunk_size
pages = loader.load_and_split(text_splitter=text_splitter)
embeddings = OpenAIEmbeddings()
db = Chroma.from_documents(pages, embeddings)
retriever = db.as_retriever()
qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever)
query = "Na czym polega metoda nowego podejścia śledzenia punktu?"
print('result:', qa.run(query))
Pamiętajcie, aby najpierw zdefiniować klucze API jako zmienne środowiskowe, na przykład:
import os
os.environ["OPENAI_API_KEY"] = "..."
os.environ["PROMPTLAYER_API_KEY"] = "..."
Po uruchomieniu powyższego kodu, w panelu PromptLayer otrzymamy logi requestów jakie zostały wysłane do OpenAI.
Dla powyższego przykładu wysłany został jeden request do modelu text-davinci-003
, który kosztował $0.01982, trwał 22 sekundy i wykorzystał 991 tokenów.
Tagowanie
Tagowanie to bardzo przydatna funkcjonalność, która pozwala przypisać tagi do zapytań. W przykładzie powyżej użyliśmy 2 tagów: langchain-requests i chatbot. Wyszukiwarka dostępna w panelu PromptLayer pozwala łatwo filtrować logi według tagów.
Prompt Engineering
Dzięki PromptLayer możemy podpatrzeć, jak komponowane są prompty za pomocą LangChain. Dla naszego przykładu możemy zobaczyć wykorzystany szablon:
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.
...
Kontekst, na podstawie którego ma zostać przygotowana odpowiedź
...
Question: Na czym polega metoda nowego podejścia śledzenia punktu?
Helpful Answer: