LangChain to framework do budowania aplikacji z LLM - łańcuchy operacji, pamięć, narzędzia!
1pip install langchain langchain-openai langchain-anthropic1from langchain_openai import ChatOpenAI
2from langchain_anthropic import ChatAnthropic
3from langchain_core.messages import HumanMessage, SystemMessage
4
5# OpenAI
6llm = ChatOpenAI(model="gpt-5", temperature=0.7)
7
8# Anthropic
9llm = ChatAnthropic(model="claude-sonnet-4-6")
10
11# Proste wywołanie
12messages = [
13 SystemMessage(content="Jesteś ekspertem od Safari."),
14 HumanMessage(content="Opowiedz o słoniach.")
15]
16
17response = llm.invoke(messages)
18print(response.content)1from langchain_core.prompts import ChatPromptTemplate
2
3# Szablon z zmiennymi
4prompt = ChatPromptTemplate.from_messages([
5 ("system", "Jesteś ekspertem od {dziedzina}."),
6 ("human", "Opowiedz o {temat}.")
7])
8
9# Formatowanie
10formatted = prompt.format_messages(
11 dziedzina="dzikiej przyrody",
12 temat="migracji gnu"
13)
14
15response = llm.invoke(formatted)1from langchain_core.output_parsers import StrOutputParser
2
3# Prosty chain: prompt -> model -> parser
4chain = prompt | llm | StrOutputParser()
5
6# Uruchom
7result = chain.invoke({
8 "dziedzina": "Safari",
9 "temat": "lwy"
10})
11print(result)1from langchain_core.pydantic_v1 import BaseModel, Field
2from langchain_core.output_parsers import JsonOutputParser
3
4# Definicja struktury
5class AnimalInfo(BaseModel):
6 name: str = Field(description="Nazwa zwierzęcia")
7 habitat: str = Field(description="Siedlisko")
8 diet: str = Field(description="Dieta")
9 population: int = Field(description="Populacja")
10
11# Parser
12parser = JsonOutputParser(pydantic_object=AnimalInfo)
13
14# Prompt z instrukcją formatu
15prompt = ChatPromptTemplate.from_messages([
16 ("system", "Zwróć informacje o zwierzęciu w formacie JSON."),
17 ("human", "{format_instructions}\n\nZwierzę: {animal}")
18])
19
20chain = prompt | llm | parser
21
22result = chain.invoke({
23 "animal": "Słoń afrykański",
24 "format_instructions": parser.get_format_instructions()
25})
26print(result) # {'name': 'Słoń afrykański', ...}1from langchain_community.chat_message_histories import ChatMessageHistory
2from langchain_core.runnables.history import RunnableWithMessageHistory
3
4# Historia wiadomości
5history = ChatMessageHistory()
6
7# Chain z pamięcią
8chain_with_history = RunnableWithMessageHistory(
9 chain,
10 lambda session_id: history,
11 input_messages_key="input",
12 history_messages_key="history"
13)
14
15# Pierwsza wiadomość
16response1 = chain_with_history.invoke(
17 {"input": "Jestem na Safari w Kenii"},
18 config={"configurable": {"session_id": "abc123"}}
19)
20
21# Druga wiadomość - model pamięta kontekst
22response2 = chain_with_history.invoke(
23 {"input": "Jakie zwierzęta mogę tu zobaczyć?"},
24 config={"configurable": {"session_id": "abc123"}}
25)