Tekoälyagentit LangChainilla ja autonomiset työnkulut · Oppitunti

Edistyneet muistiratkaisut

Tutustukaa kehittyneempiin muistityyppeihin, kuten yhteenvetomuistiin ja entiteettimuistiin, sekä keskusteluhistorian säilyttämiseen.

Oppitunti 3/411 vaihetta

Edistyneet muistiratkaisut on ilmainen Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit LangChainilla ja autonomiset työnkulut-kurssilla on yhteensä 4 oppituntia.

Agentin kehittyneempi muisti

Aiemmissa oppitunneissa opimme keskustelun perustason muistista. Entä jos keskustelut pitenevät huomattavasti tai sisältävät paljon yksityiskohtia?

Kehittyneet muistiratkaisut auttavat agentteja hallitsemaan monimutkaisia vuorovaikutustilanteita tiivistämällä sisältöä tai seuraamalla entiteettejä.

Tiivistysmuistin esittely

Tiivistysmuisti tiivistää aiemmat keskustelut lyhyeksi yhteenvedoksi.

  • Se estää konteksti-ikkunaa täyttymästä.
  • Agentti "muistaa" edelleen keskustelun pääkohdat tallentamatta jokaista viestiä.
  • Se on hyödyllinen pitkään jatkuvissa keskusteluissa, joissa alkuvaiheen yksityiskohdat muuttuvat vähemmän tärkeiksi.

Tiivistysmuisti käytännössä

LangChainin ConversationSummaryBufferMemory käyttää LLM:ää yhteenvetojen luomiseen. Se säilyttää puskurissa viimeisimmät viestit ja tiivistää vanhempia viestejä tarpeen mukaan.

Kokeilkaa tätä esimerkkiä:

from langchain.memory import ConversationSummaryBufferMemory
from langchain_openai import OpenAI

# For demonstration, we'll use a mock LLM
# In a real scenario, you'd use your actual LLM (e.g., OpenAI, HuggingFace)
# from langchain.llms import OpenAI
# llm = OpenAI(temperature=0)

class MockLLM:
    def __init__(self):
        pass
    def invoke(self, prompt):
        if "summarize" in prompt.lower():
            return "A short summary of the conversation."
        return "Mock LLM response to: " + prompt

llm = MockLLM()

# max_token_limit ensures summary happens before context window is full
memory = ConversationSummaryBufferMemory(llm=llm, max_token_limit=100)

def run_interaction(user_input, ai_output):
    memory.save_context({"input": user_input}, {"output": ai_output})
    print(f"Memory buffer: {memory.load_memory_variables({})['history']}")

if __name__ == "__main__":
    print("--- Summary Buffer Memory Demo ---")
    run_interaction("Hi there!", "Hello! How can I help?")
    run_interaction("My name is Alice.", "Nice to meet you, Alice.")
    run_interaction("I want to discuss project Alpha.", "Okay, tell me more.")
    run_interaction("Project Alpha is about AI agents.", "Interesting! What aspects?")
    # After more interactions, older messages would be summarized
    print("\nFinal memory (after potential summarization):")
    print(memory.load_memory_variables({})['history'])

Tiettyjen entiteettien seuraaminen

Entiteettimuisti on suunniteltu muistamaan tiettyjä "entiteettejä" (kuten henkilöitä, paikkoja tai aiheita) sekä niihin liittyviä tietoja keskustelun aikana.

  • Se ylläpitää entiteettien tietämyskantaa.
  • Se on hyödyllinen, kun agentin on muistettava nimettyihin asioihin liittyviä yksityiskohtia.
  • Esimerkki: "Alice pitää kahvista" -> agentti muistaa "Alicen" ja sen, että hän "pitää kahvista".

ConversationEntityMemory-muistin käyttäminen

ConversationEntityMemory käyttää LLM:ää entiteettien ja niiden ominaisuuksien poimimiseen viesteistä. Se rakentaa jokaiselle entiteetille oman profiilin.

Katsotaan, miten se toimii:

from langchain.memory import ConversationEntityMemory
from langchain_openai import OpenAI

# Using the same MockLLM for consistency
class MockLLM:
    def __init__(self):
        pass
    def invoke(self, prompt):
        if "extract entities" in prompt.lower():
            if "Alice" in prompt:
                return "{'Alice': 'Alice is a person. She likes coffee and project Alpha.'}"
            return "{}"
        if "summarize" in prompt.lower():
            return "A short summary of the conversation."
        return "Mock LLM response to: " + prompt

llm = MockLLM()

memory = ConversationEntityMemory(llm=llm)

def run_entity_interaction(user_input, ai_output):
    memory.save_context({"input": user_input}, {"output": ai_output})
    print(f"Entities: {memory.load_memory_variables({})['entities']}")

if __name__ == "__main__":
    print("--- Entity Memory Demo ---")
    run_entity_interaction("My name is Alice and I like coffee.", "Nice to meet you, Alice!")
    run_entity_interaction("I am working on project Alpha.", "That sounds interesting.")
    run_entity_interaction("My colleague Bob will join later.", "Okay, I'll remember Bob.")

    print("\nFinal entities stored:")
    print(memory.load_memory_variables({})['entities'])

Hybridimuistiratkaisut

Vielä vankempia agentteja varten voitte yhdistää eri muistityyppejä.

  • Käyttäkää tiivistysmuistia keskustelun yleisen kulun seuraamiseen.
  • Käyttäkää entiteettimuistia keskeisiin aiheisiin liittyvien tiettyjen tietojen seuraamiseen.
  • Näin muodostuu monipuolinen ja kerroksittainen ymmärrys kuormittamatta LLM:n konteksti-ikkunaa.

Muistaminen istuntojen välillä

Oletusarvoisesti agentin muisti menetetään ohjelman päättyessä. Entä jos haluatte agentin muistavan käyttäjän päivien tai viikkojen ajan?

Pysyvä muisti mahdollistaa agentin muistin tallentamisen ja lataamisen, mikä tukee pitkäkestoisia keskusteluja ja niiden jatkuvuutta.

Muistin tallentaminen ja lataaminen

Yksinkertainen tapa säilyttää muisti on tallentaa sen tila tiedostoon, esimerkiksi JSON-muodossa. Kun agentti käynnistyy uudelleen, se voi ladata tiedoston ja palauttaa muistinsa.

Tässä esimerkissä näytetään, miten muisti sarjallistetaan (tallennetaan) ja desarjallistetaan (ladataan):

import json
from langchain.memory import ConversationBufferMemory

# Example of a simple buffer memory
memory = ConversationBufferMemory()

if __name__ == "__main__":
    print("--- Memory Persistence Demo ---")

    # 1. Save context
    memory.save_context({"input": "Hello!"}, {"output": "Hi there!"})
    memory.save_context({"input": "How are you?"}, {"output": "I'm good!"})

    # 2. Extract and save memory variables
    memory_data = memory.load_memory_variables({})
    print(f"Memory before saving: {memory_data}")

    # Convert to JSON string and save to a file
    with open("agent_memory.json", "w") as f:
        json.dump(memory_data, f, indent=2)
    print("\nMemory saved to agent_memory.json")

    # 3. Create new memory and load from file
    new_memory = ConversationBufferMemory()
    with open("agent_memory.json", "r") as f:
        loaded_data = json.load(f)

    # For ConversationBufferMemory, you can set the buffer directly
    # More complex memories might have specific load methods
    new_memory.buffer = loaded_data.get('history', '')
    print(f"\nMemory loaded into new agent: {new_memory.load_memory_variables({})['history']}")

Luotettavat pysyvyysratkaisut

Tuotantokäyttöön tarkoitetuissa sovelluksissa pelkkä tiedostoon tallentaminen ei riitä. Harkitkaa seuraavia vaihtoehtoja:

  • Tietokannat: SQL-tietokannat (SQLite, PostgreSQL) tai NoSQL-tietokannat (MongoDB, Redis) jäsenneltyyn ja skaalautuvaan tallennukseen.
  • Vektoritietovarastot: Keskusteluhistorian upotusten säilyttämiseen, mikä on hyödyllistä kehittyneemmässä haussa.
  • LangChain integroituu moniin tietokantoihin, mikä helpottaa muistin pysyvää tallentamista.

Muistityyppien tietovisa

Mikä muistityyppi sopisi parhaiten agentille, jonka on muistettava nimettyihin asiakkaisiin liittyviä tietoja (esimerkiksi heidän mieltymyksiään ja projektien nimiä) erittäin pitkän keskustelun ajan?

Kertaus: kehittyneet muistiratkaisut

Tänään tutustuimme tekoälyagenttien kehittyneisiin muistiratkaisuihin:

  • Tiivistysmuisti: Tiivistää pitkät keskustelut.
  • Entiteettimuisti: Seuraa nimettyihin entiteetteihin liittyviä tietoja.
  • Pysyvyys: Muistin tallentaminen ja lataaminen kontekstin säilyttämiseksi istuntojen välillä tiedostojen tai tietokantojen avulla.

Näiden tekniikoiden avulla voitte rakentaa älykkäämpiä ja asiayhteyden paremmin huomioivia agentteja!

Aloita maksutta

Opi Tekoälyagentit LangChainilla ja autonomiset työnkulut tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
50

Usein kysytyt kysymykset

Onko oppitunti ”Edistyneet muistiratkaisut” ilmainen?

Kyllä – oppitunnin ”Edistyneet muistiratkaisut” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tekoälyagentit LangChainilla ja autonomiset työnkulut-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit LangChainilla ja autonomiset työnkulut-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Edistyneet muistiratkaisut”?

Tutustukaa kehittyneempiin muistityyppeihin, kuten yhteenvetomuistiin ja entiteettimuistiin, sekä keskusteluhistorian säilyttämiseen. Harjoittelet Tekoälyagentit LangChainilla ja autonomiset työnkulut-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Tekoälyagentit LangChainilla ja autonomiset työnkulut-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Edistyneet muistiratkaisut”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppitunnilla?

Kyllä. Jokainen Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Agenttien muistin käsitteet
  2. Keskustelupuskurimuisti
  3. Edistyneet muistiratkaisut
  4. Entiteetti- ja yhteenvetomuistin strategiat
← Takaisin: Tekoälyagentit LangChainilla ja autonomiset työnkulut