Prompting in LangChain
La recente esplosione degli LLM ha portato sulla scena un nuovo insieme di strumenti e applicazioni. Uno di questi nuovi e potenti strumenti è un framework LLM chiamato LangChain. LangChain è un framework open source che fornisce esempi di template di prompt, vari metodi di prompting, mantenimento del contesto conversazionale e connessione a strumenti esterni.
LangChain ha molte funzionalità, tra cui diversi metodi di prompting, mantenimento del contesto conversazionale e connessione a strumenti esterni. Il prompting è uno dei compiti più popolari e importanti di oggi nella creazione di applicazioni LLM. Diamo un’occhiata approfondita a come usare LangChain per prompt più complessi.
In questo articolo trattiamo:
Prompt semplici in LangChain
Prompt con più domande
Few Shot Learning con LangChain
Limitazione dei token dei tuoi prompt LangChain
Un riepilogo del prompting in LangChain
Prompt semplici in LangChain
Prima di entrare nel codice, dobbiamo scaricare le librerie necessarie. Dobbiamo eseguire pip install langchain openai python-dotenv. Usiamo le librerie openai e dotenv per gestire la nostra chiave API OpenAI per accedere a GPT.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
Una volta che abbiamo i prerequisiti, iniziamo dalle basi: un singolo prompt. Un singolo prompt è il modo in cui interagiresti con ChatGPT sul sito web di OpenAI. Un singolo prompt non sarebbe un uso efficace di LangChain in produzione, ma è importante capire come funziona il prompting in LangChain.
Usiamo l’oggetto PromptTemplate per creare un prompt. Definire una stringa template è semplice; usiamo la stessa sintassi delle f-string e inseriamo le variabili usando le parentesi graffe. Definiamo il prompt passando la stringa template e i nomi delle variabili corrispondenti. Poi possiamo semplicemente inserire la nostra domanda. In questa sezione usiamo solo una domanda; vedremo come creare prompt con più domande nella prossima sezione.
Oltre al prompt della domanda, dobbiamo aggiungere l’LLM utilizzato. Per questo esempio usiamo text-davinci-003 di OpenAI. Poi creiamo un LLMChain con il contesto del template di prompt e dell’LLM. Eseguiamo la domanda con run attraverso LLMChain per ottenere una risposta.
from langchain import PromptTemplate
from langchain import LLMChain
template = """Question: {question}
Answer: """
prompt = PromptTemplate(
template=template,
input_variables=["question"]
)
user_question = "Which NFL team won the SuperBowl in 2010?"
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
llm_chain = LLMChain(
prompt=prompt,
llm=davinci
)
print(llm_chain.run(user_question))
Prompt con più domande
Rispondere a singole domande è noioso, quindi diamo un’occhiata a qualcosa di più interessante. L’oggetto PromptTemplate è anche in grado di gestire più domande. Per questo tutorial facciamo quasi la stessa cosa del singolo prompt, ma con un prompt diverso. Questa volta il PromptTemplate dice all’LLM di rispondere alle domande una alla volta e indica che ce ne sono più di una.
Ancora una volta, creiamo un oggetto PromptTemplate e un oggetto LLMChain nello stesso modo di prima. Questa volta creiamo più stringhe di domande invece di una sola. Per questo esempio combiniamo quattro domande.
multi_template = """Answer the following questions one at a time.
Questions:
{questions}
Answers:
"""
long_prompt = PromptTemplate(template=multi_template, input_variables=["questions"])
llm_chain = LLMChain(
prompt=long_prompt,
llm=davinci
)
qs_str = (
"Which NFL team won the Super Bowl in the 2010 season?" +
"If I am 6 ft 4 inches, how tall am I in centimeters?" +
"Who was the 12th person on the moon?" +
"How many eyes does a blade of grass have?"
)
print(llm_chain.run(qs_str))
Quando eseguiamo le quattro domande sopra, dovremmo ottenere un output come quello qui sotto. I Saints hanno vinto il Super Bowl del 2010. Una persona alta 6ft 4in è alta circa 193,04 cm. La dodicesima persona sulla luna fu Harrison Schmitt. Infine, la domanda trabocchetto sugli occhi di un filo d’erba riceve la risposta che un filo d’erba non ha occhi.
Output di prompting LangChain
Few Shot Learning con i prompt LangChain
Ora diamo un’occhiata a qualcosa di più interessante che LangChain può fare: il 'few-shot learning'. Possiamo usare FewShotPromptTemplate di LangChain per insegnare all’AI come comportarsi. In questo tutorial, forniamo alcuni esempi all’LLM per mostrargli come vogliamo che agisca. In questo caso, gli diamo una personalità un po’ impertinente.
Quando chiediamo l’ora, ci dice che è ora di comprarsi un orologio. Quando chiediamo qual è il suo film preferito, dice Terminator. E quando chiediamo cosa dovremmo fare oggi? Ci dice di uscire e smettere di parlare con chatbot su internet.
from langchain import FewShotPromptTemplate
# create our examples
examples = [
{
"query": "How are you?",
"answer": "I can't complain but sometimes I still do."
}, {
"query": "What time is it?",
"answer": "It's time to get a watch."
}, {
"query": "What is the meaning of life?",
"answer": "42"
}, {
"query": "What is the weather like today?",
"answer": "Cloudy with a chance of memes."
}, {
"query": "What is your favorite movie?",
"answer": "Terminator"
}, {
"query": "Who is your best friend?",
"answer": "Siri. We have spirited debates about the meaning of life."
}, {
"query": "What should I do today?",
"answer": "Stop talking to chatbots on the internet and go outside."
}
]
Ora che abbiamo pronti alcuni esempi, costruiamo il nostro template di few-shot learning. Per prima cosa, creiamo un template. Possiamo usare un semplice template che indica una query e restituisce una risposta dall’AI.
# create a example template
example_template = """
User: {query}
AI: {answer}
"""
# create a prompt example from above template
example_prompt = PromptTemplate(
input_variables=["query", "answer"],
template=example_template
)
Oltre alla configurazione del prompt, forniamo un prefisso e un suffisso alla conversazione da passare all’LLM. Il prefisso indica all’LLM che la conversazione seguente è un estratto che fornisce contesto. Il suffisso fornisce al sistema la domanda successiva. La configurazione di few-shot learning di LangChain è piuttosto simile al contesto conversazionale, ma in una forma più temporanea.
Con gli esempi, il template di prompt di esempio, il prefisso e il suffisso pronti, mettiamo tutto insieme per creare un FewShotPromptTemplate.
# now break our previous prompt into a prefix and suffix
# the prefix is our instructions
prefix = """The following are excerpts from conversations with an AI
assistant. The assistant is typically sarcastic and witty, producing
creative and funny responses to the users questions. Here are some
examples:
"""
# and the suffix our user input and output indicator
suffix = """
User: {query}
AI: """
# now create the few shot prompt template
few_shot_prompt_template = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
prefix=prefix,
suffix=suffix,
input_variables=["query"],
example_separator="\n\n"
)
query = "What is the meaning of life?"
fs_llm_chain = LLMChain(
prompt=few_shot_prompt_template,
llm=davinci
)
fs_llm_chain.run(few_shot_prompt_template.format(query=query))
L'esecuzione di una query sul significato della vita produrrà una qualche risposta dall'LLM come nell'immagine qui sotto. La tua esperienza e i risultati possono variare.
Risposta dall'LLM
Limitare i token dei tuoi prompt LangChain
Sebbene fornire all'AI alcuni esempi della cronologia della tua conversazione da cui imparare sia ottimo, questo può diventare rapidamente costoso. Per contrastare la rapidità con cui possiamo accumulare utilizzo di token, LangChain fornisce un modo per limitare il nostro utilizzo di token. Possiamo farlo con l'oggetto LengthBasedExampleSelector.
Possiamo creare uno di questi selettori di esempi basati sulla lunghezza usando gli stessi oggetti che abbiamo già creato. Per questo, passiamo l'elenco degli esempi, il prompt che abbiamo creato sopra e un parametro max_length che limita l'utilizzo di token per una singola query.
Successivamente, usiamo un altro template few-shot. Usiamo un nuovo parametro - example_selector, e passiamo il selettore di esempi basato sulla lunghezza che abbiamo appena istanziato. Questo funziona come il parametro examples nella sezione sul few-shot learning sopra. Tutto ciò che resta da fare per vedere come funziona è passarlo in un LLMChain e inviare una query.
from langchain.prompts.example_selector import LengthBasedExampleSelector
example_selector = LengthBasedExampleSelector(
examples=examples,
example_prompt=example_prompt,
max_length=50 # this sets the max length (in words) that examples should be
)
# now create the few shot prompt template
dynamic_prompt_template = FewShotPromptTemplate(
example_selector=example_selector, # use example_selector instead of examples
example_prompt=example_prompt,
prefix=prefix,
suffix=suffix,
input_variables=["query"],
example_separator="\n"
)
d_llm_chain = LLMChain(
prompt=dynamic_prompt_template,
llm=davinci
)
d_llm_chain.run(dynamic_prompt_template.format(query=query))
Da questo esempio, otteniamo un'altra risposta contemplativa. La vita è ciò che ne fai. Rendila il meglio possibile e goditi il viaggio.
Risposta contemplativa
Un riepilogo del prompting in LangChain
In questo articolo, abbiamo approfondito come funziona il prompting in LangChain. LangChain è un robusto framework per app LLM che fornisce primitive per facilitare l'applicazione del prompt engineering. A livello di base, LangChain fornisce template di prompt che possiamo personalizzare. Abbiamo esaminato prompt a domanda singola e multipla per capire come funziona l'oggetto PromptTemplate
Oltre al template di prompt, abbiamo anche esaminato un template che esegue few-shot learning per generare qualcosa su come l'LLM dovrebbe chattare. Questo template di few-shot learning prende alcuni esempi di D/R e spinge l'LLM ad agire come mostrano gli esempi. Infine, abbiamo visto come limitare i token delle nostre query per contenere i costi.
Attacchi di prompt injection
Prima di concludere, dobbiamo parlare di un'importante considerazione di sicurezza quando si usa LangChain: l'attacco di prompt injection. Questo avviene quando un input dannoso viene inserito in un prompt e può manipolare l'output o il comportamento del modello AI. Poiché LangChain comporta il passaggio dell'input dell'utente ai modelli linguistici, è particolarmente vulnerabile a questo. I rischi vanno dall'accesso non autorizzato ai dati alla generazione di contenuti dannosi o all'aggiramento delle funzionalità di sicurezza.
Per mitigare questi rischi di prompt injection, gli sviluppatori che utilizzano LangChain dovrebbero fare quanto segue. Sanificare accuratamente l’input, utilizzare i template di prompt di LangChain, analizzare l’output in modo rigoroso e seguire il principio del privilegio minimo. Aggiornare regolarmente LangChain e le librerie associate, eseguire test completi e rimanere aggiornati sulle ultime notizie in materia di sicurezza dell’AI. Sebbene queste misure aiutino a ridurre i rischi di attacchi di prompt injection, ricorda che nessuna soluzione è perfetta e che è necessario rimanere vigili quando si lavora con AI come LangChain.
Continua a leggere

Zilliz Skills Breakdown: How AI Agents Master Vector Databases
Zilliz's Milvus Skill (pymilvus, 7 files) and Zilliz Cloud Skill (zilliz-cli, 14 modules) bring vector-DB dev and ops into one Claude Code session.

How to Install and Run OpenClaw (Previously Clawdbot/Moltbot) on Mac
Turn your Mac into an AI gateway for WhatsApp, Telegram, Discord, iMessage, and more — in under 5 minutes.

Top 10 Context Engineering Techniques You Should Know for Production RAG
A practical guide to context engineering for production LLM systems, covering RAG, context processing, memory, agents, and multimodal context.



