ÎncepețiÎncepe gratuit

Funcție de răspuns la întrebări cu RAG

Ești aproape de final! Ultima piesă din fluxul RAG este integrarea documentelor recuperate cu un model de răspuns la întrebări.

O funcție prompt_with_context_builder() a fost deja definită și pusă la dispoziția ta. Aceasta preia documentele recuperate din indexul Pinecone și le integrează într-un prompt pe care modelul de răspuns la întrebări îl poate procesa:

def prompt_with_context_builder(query, docs):
    delim = '\n\n---\n\n'
    prompt_start = 'Answer the question based on the context below.\n\nContext:\n'
    prompt_end = f'\n\nQuestion: {query}\nAnswer:'

    prompt = prompt_start + delim.join(docs) + prompt_end
    return prompt

Vei implementa funcția question_answering(), care va oferi modelului de limbaj gpt-4o-mini de la OpenAI context suplimentar și surse pe baza cărora poate răspunde la întrebările tale.

Acest exercițiu face parte din cursul

Crearea aplicațiilor AI cu Pinecone

Vezi cursul

Instrucțiuni pentru exercițiu

  • Inițializează clientul Pinecone cu cheia ta API (clientul OpenAI este disponibil ca client).
  • Recuperează cele mai similare trei documente față de textul query din namespace-ul 'youtube_rag_dataset'.
  • Generează un răspuns pentru prompt-ul și sys_prompt-ul furnizate, folosind modelul 'gpt-4o-mini' de la OpenAI, specificat prin argumentul funcției chat_model.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# Initialize the Pinecone client
pc = Pinecone(api_key="____")
index = pc.Index('pinecone-datacamp')

query = "How to build next-level Q&A with OpenAI"

# Retrieve the top three most similar documents and their sources
documents, sources = retrieve(____, top_k=____, namespace='____', emb_model="text-embedding-3-small")

prompt_with_context = prompt_with_context_builder(query, documents)
print(prompt_with_context)

def question_answering(prompt, sources, chat_model):
    sys_prompt = "You are a helpful assistant that always answers questions."
    
    # Use OpenAI chat completions to generate a response
    res = ____(
        model=____,
        messages=[
            {"role": "system", "content": ____},
            {"role": "user", "content": ____}
        ],
        temperature=0
    )
    answer = res.choices[0].message.content.strip()
    answer += "\n\nSources:"
    for source in sources:
        answer += "\n" + source[0] + ": " + source[1]
    
    return answer

answer = question_answering(
  prompt=prompt_with_context,
  sources=sources,
  chat_model='gpt-4o-mini')
print(answer)
Editează și rulează codul