Your Techmate

Tworzenie bloków Gutenberg z użyciem ChatGPT.

Zobacz kurs

Podstawy AWS.

Automatyzacja procesów z Make.com

  • Jak stworzyć jedną wtyczkę dla wielu bloków Gutenberga?

    Jak stworzyć jedną wtyczkę dla wielu bloków Gutenberga?

  • Nowości w WordPress 6.6.2: Bug Fixes i zmiany w edytorze Gutenberga.
  • Cwicly: Krótka historia innowacji i przemian
  • Konfiguracja środowiska do tworzenia bloków Gutenberga: Przewodnik krok po kroku
  • Gutenberg vs. Site Editor vs. FSE – co jest czym w WordPressie?
  • Jak bez kodowania dodać Google Font do Gutenberga?

PromptLayer – czyli zaglądamy w komunikację między LangChain z modelem językowym

Awatar Mike Tomala

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 założeniu konta i zalogowaniu mamy dostęp do panelu PromptLayer.

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: