· AI & Automation  · 6 min read

AI työkalut osa 2 - LangChain Opas: Rakenna AI-Agentteja Pythonilla

Rakenna tuotantovalmiita Python AI-agentteja LangChainilla ja LangGraphilla

Rakenna tuotantovalmiita Python AI-agentteja LangChainilla ja LangGraphilla

Kuinka LangChain Auttaa Rakentamaan Tuotantovalmiita AI-Agentteja Pythonilla

Tämä artikkeli on osa 5-osaista sarjaamme AI-Agentti- ja Työnkulkutyökaluista, jossa tutkimme johtavia alustoja ja kehyksiä tuotantovalmiiden AI-ratkaisujen rakentamiseen.

📚 Sarja: Työkalut Joita Käytämme AI-Kehityksessä

  1. Azure AI Foundry - Kuinka Azure AI Foundry auttaa rakentamaan turvallisia yritystason AI-ratkaisuja
  2. LangChain (tämä artikkeli) - Kuinka LangChain auttaa rakentamaan tuotantovalmiita AI-agentteja Pythonilla
  3. Semantic Kernel - Kuinka Semantic Kernel auttaa rakentamaan moniagentti AI-järjestelmiä .NET:llä
  4. n8n - Kuinka n8n demokratisoi AI-automaation low-code-työnkuluilla
  5. Microsoft Agent Framework - Kuinka Microsoft Agent Framework mahdollistaa skaalautuvat moniagenttityönkulut

Mikä on LangChain?

LangChain on suosituin avoimen lähdekoodin Python-kehys AI-sovellusten rakentamiseen, jotka hyödyntävät suuria kielimalleja (LLM). Se muuntaa yksinkertaiset LLM API-kutsut kehittyneiksi AI-agenteiksi, jotka kykenevät päättelemään, käyttämään työkaluja, ylläpitämään muistia ja suorittamaan monimutkaisia työnkulkuja.

LangChain ratkaisee LLM-orkestraation kriittisen haasteen: kielimallien yhdistäminen ulkoisiin tietolähteisiin, API:hin ja työkaluihin samalla kun hallitaan kontekstia, muistia ja virheidenkäsittelyä. Sen sijaan, että kirjoittaisit mukautettua prompt engineering -logiikkaa ja työkalukutsujen koodia, LangChain tarjoaa taistelutestatut abstraktiot, jotka hoitavat monimutkaisuuden puolestasi.

Kehys on suunniteltu tuotantotason AI-järjestelmille, ei vain prototyypeille. Yli 100 000 GitHub-tähdellä ja yritykset kuten Robinhood, Notion ja Zapier käyttävät sitä, LangChainista on tullut de facto -standardi Python AI-kehitykselle.

Miksi LangChain AI-Agenteille?

Perinteiset LLM-sovellukset ovat tilattomia ja reaktiivisia - ne vastaavat prompteihin, mutta eivät voi suunnitella, muistaa tai olla vuorovaikutuksessa ulkoisten järjestelmien kanssa. LangChainilla rakennetut AI-Agentit voittavat nämä rajoitukset:

  • Autonominen päättely: Agentit päättävät, mitä toimenpiteitä tehdä kontekstin perusteella
  • Työkalujen käyttö: Yhdistä tietokantoihin, API:hin, hakukoneisiin ja mukautettuihin funktioihin
  • Muistijärjestelmät: Ylläpidä keskusteluhistoriaa ja pitkäaikaista tietoa
  • Virheiden palautus: Yritä epäonnistuneita operaatioita uudelleen ja käsittele poikkeuksia
  • Monivaiheinen työnkulut: Jaa monimutkaiset tehtävät hallittaviin vaiheisiin

LangChain on erityisen tehokas:

  • Retrieval-Augmented Generation (RAG): Perusta LLM-vastaukset omaan dataasi
  • Keskusteleva AI: Rakenna chatbotteja kontekstilla ja muistilla
  • Data-analyysiagentit: Kysy tietokantoja ja visualisoi tulokset
  • Automaatiotyönkulut: Korvaa manuaaliset tehtävät älykkäillä agenteilla

LangChain Ydinarkkitehtuuri

LangChain on organisoitu modulaarisiksi komponenteiksi, jotka yhdistät. Tämän arkkitehtuurin ymmärtäminen on olennaista vahvojen agenttien rakentamiselle.

Komponenttihierarkia

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

# 1. Malli: LLM (OpenAI, Anthropic, paikalliset mallit jne.)
model = ChatOpenAI(
    model="gpt-4o",
    temperature=0.7,
    api_key="your-api-key"
)

# 2. Prompt: LLM-syötteen malli
prompt = ChatPromptTemplate.from_messages([
    ("system", "Olet avulias AI-assistentti, joka erikoistuu {domain}-alaan."),
    ("user", "{question}")
])

# 3. Output Parser: Strukturoi LLM-vastaus
parser = StrOutputParser()

# 4. Ketju: Yhdistä komponentit LCEL:llä (LangChain Expression Language)
chain = prompt | model | parser

# Suorita ketju
result = chain.invoke({
    "domain": "Python-kehitys",
    "question": "Miten optimoin tietokantakyselyt?"
})

Keskeiset Konseptit:

  • Runnables: Jokainen komponentti toteuttaa Runnable-rajapinnan (.invoke(), .stream(), .batch())
  • LCEL (LangChain Expression Language): |-operaattori yhdistää komponentit
  • Tyyppiturvallisuu: Pydantic-mallit varmistavat datan validoinnin ajonaikana

LangChain vs LangGraph

LangChain tarjoaa lineaarisia ketjuja (vaiheittainen suoritus), kun taas LangGraph mahdollistaa sykliset työnkulut (silmukat, ehdot, ihminen silmukassa). Käytä LangGraphia:

  • Moniagenttien yhteistyöhön
  • Iteratiiviseen hiomiseen (agentti yrittää, arvioi, yrittää uudelleen)
  • Monimutkaisiin tilakalloihin

Käsittelemme molempia tässä oppaassa.

Ensimmäisen LangChain-Agentin Rakentaminen

Agentit ovat autonomisia järjestelmiä, jotka käyttävät LLM:iä päättääkseen, mitä työkaluja kutsua. Toisin kuin ketjut (ennalta määritellyt vaiheet), agentit päättelevät parhaasta toiminnasta dynaamisesti.

Agenttityypit LangChainissa

AgenttityyppiParhaitenTyökalutMuisti
ReActYleiskäyttöinen päättelyMikä tahansaValinnainen
OpenAI FunctionsStrukturoitu työkalukutsuOpenAI-funktioskeetSisäänrakennettu
ConversationalChatbotit historiallaMikä tahansaVaaditaan
Plan-and-ExecuteMonivaiheinen tehtävätMikä tahansaTehtävälista

ReAct-Agentin Luominen Työkaluilla

ReAct-malli (Reasoning + Acting) on monipuolisin agenttiarkkitehtuuri. Agentti vuor ottelee ajattelun ja työkalujen käytön välillä.

from langchain.agents import create_react_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain_community.tools import DuckDuckGoSearchRun
from langchain_core.prompts import PromptTemplate
from langchain.tools import Tool

# 1. Määrittele työkalut, joita agentti voi käyttää
search = DuckDuckGoSearchRun()

def calculate(expression: str) -> str:
    """Arvioi matemaattinen lauseke turvallisesti."""
    try:
        # Käytä ast.literal_eval turvallisuuden vuoksi
        import ast
        result = eval(expression, {"__builtins__": {}}, {})
        return f"Tulos: {result}"
    except Exception as e:
        return f"Virhe: {str(e)}"

tools = [
    Tool(
        name="Haku",
        func=search.run,
        description="Etsi internetistä ajankohtaista tietoa. Syötteen tulisi olla hakukysely."
    ),
    Tool(
        name="Laske",
        func=calculate,
        description="Suorita matemaattisia laskutoimituksia. Syötteen tulisi olla kelvollinen Python-lauseke (esim. '2 + 2', '10 * 5')."
    )
]

# 2. Luo agentti ReAct-promptilla
prompt = PromptTemplate.from_template("""
Olet älykäs agentti, joka kykenee päättelemään ja käyttämään työkaluja.

Saatavilla olevat työkalut:
{tools}

Työkalujen nimet: {tool_names}

Käytä seuraavaa muotoa:

Kysymys: syötekysymys, johon sinun on vastattava
Ajatus: sinun tulisi aina miettiä, mitä tehdä
Toiminto: suoritettava toiminto, tulisi olla yksi seuraavista [{tool_names}]
Toiminnon syöte: toiminnon syöte
Havainto: toiminnon tulos
... (tämä Ajatus/Toiminto/Toiminnon syöte/Havainto voi toistua N kertaa)
Ajatus: Tiedän nyt lopullisen vastauksen
Lopullinen vastaus: lopullinen vastaus alkuperäiseen syötekysymykseen

Kysymys: {input}
Ajatus: {agent_scratchpad}
""")

llm = ChatOpenAI(model="gpt-4o", temperature=0)
agent = create_react_agent(llm, tools, prompt)

# 3. Luo executor (käsittelee työkalukutsujen logiikan)
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True,  # Tulosta päättelyvaiheet
    max_iterations=10,  # Estä päättymättömät silmukat
    handle_parsing_errors=True  # Virheiden sujuva käsittely
)

# 4. Suorita agentti
response = agent_executor.invoke({
    "input": "Mikä on Bitcoinin nykyinen hinta kerrottuna 100:lla?"
})

print(response["output"])

Mitä tapahtuu kulissien takana:

  1. Agentti vastaanottaa kysymyksen
  2. Ajatus: “Minun on etsittävä Bitcoinin nykyinen hinta”
  3. Toiminto: Kutsuu Haku-työkalua “Bitcoin nykyinen hinta”
  4. Havainto: Saa hakutuloksen (esim. “45 000 €”)
  5. Ajatus: “Nyt minun on kerrottava 100:lla”
  6. Toiminto: Kutsuu Laske-työkalua “45000 * 100”
  7. Havainto: Saa “4 500 000”
  8. Lopullinen vastaus: Palauttaa tuloksen käyttäjälle

LangChain Työkalut: Agenttien Yhdistäminen Todelliseen Maailmaan

Työkalut ovat funktioita, joita agentit kutsuvat vuorovaikuttaakseen ulkoisten järjestelmien kanssa. LangChain tarjoaa satoja valmiita työkaluja ja tekee mukautettujen luomisesta helppoa.

Valmiiden Työkalujen Käyttö

from langchain_community.tools import (
    WikipediaQueryRun,
    PythonREPLTool,
    ShellTool,
    FileReadTool,
)
from langchain_community.utilities import WikipediaAPIWrapper

# Wikipedia-haku
wikipedia = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())

# Suorita Python-koodia (käytä varoen!)
python_repl = PythonREPLTool()

# Shell-komennot (tuotanto: rajoita turvallisiin komentoihin)
shell = ShellTool()

# Tiedosto-operaatiot
file_reader = FileReadTool()

tools = [wikipedia, python_repl, shell, file_reader]

Tuotantovaroitus: PythonREPLTool ja ShellTool suorittavat mielivaltaista koodia. Käytä niitä vain hiekka laatikoiduissa ympäristöissä tai tiukalla syötteen validoinnilla.

Usein Kysytyt Kysymykset (UKK)

Mihin LangChain on tarkoitettu?

LangChain on tarkoitettu AI-agenttien ja sovellusten rakentamiseen, joita tehostävat suuret kielimallit (LLM). Se tarjoaa työkaluja prompt engineeringiin, työkalukutsuihin, muistinhallintaan, RAG:iin (Retrieval-Augmented Generation) ja moniagenttityönkulkuihin Pythonilla.

Onko LangChain ilmainen?

Kyllä, LangChain on avoimen lähdekoodin ja ilmainen MIT-lisenssillä. Tarvitset kuitenkin API-avaimia LLM-palveluntarjoajille (OpenAI, Anthropic jne.), joilla on omat hinnoittelunsa. Voit myös käyttää ilmaisia paikallisia malleja LangChainin kanssa.

Mikä on ero LangChainin ja LangGraphin välillä?

LangChain tarjoaa lineaarisia ketjuja ja perusagentteja. LangGraph mahdollistaa sykliset työnkulut silmukoilla, ehdoilla ja moniagenttien yhteistyöllä. Käytä LangGraphia monimutkaisille, tilallisille järjestelmille, jotka tarvitsevat iteratiivista hiomista.

Voinko käyttää LangChainia paikallisten LLM:ien kanssa?

Kyllä! LangChain tukee Ollama, Hugging Face -malleja, LlamaCpptä ja muita paikallisia LLM-palveluntarjoajia. Et ole lukittu maksuullisiin API:hin kuten OpenAI.

Miten LangChain RAG toimii?

LangChain RAG:

  1. Jakaa dokumentit paloihin
  2. Muuntaa palat vektori-upotuksiksi
  3. Tallentaa vektorit tietokantaan (Chroma, Pinecone, Weaviate)
  4. Kyselyhetkellä hakee relevantit palat
  5. Injektoi palat LLM-promptiin kontekstina

Mikä on ero LangChainin ja Semantic Kernelin välillä?

LangChain on Python-ensisijainen laajalla ekosysteemillä integraatioita. Semantic Kernel on .NET-keskittynyt vahvalla tyypityksellä ja yritysmalleilla. LangChainilla on enemmän yhteisötyökaluja; Semantic Kernelillä parempi Azure-integraatio.

Miten debuggaan LangChain-agentteja?

Ota käyttöön verbose-tila (verbose=True) nähdäksesi agentin päättelyvaiheet. Käytä LangSmithiä yksityiskohtaiseen jäljitykseen, mukaan lukien tokenien käyttö, latenssi ja virheet. Lisää lokitus mukautettuihin työkaluihin.


Seuraavat Askeleet: Hallitse LangChain

Tulossa Seuraavaksi Työkalut Joita Käytämme -sarjassa:

  • AutoGen: Microsoftin Moniagenttikehys
  • CrewAI: Roolipohjainen Moniagenttijärjestelmät
  • LlamaIndex: Edistynyt RAG ja Tietograafit
Back to Blog