Orkestriranje obsežnih cevovodov LLM z DSPy in LangChain za izboljšane DevOps | B4N1

Orkestriranje obsežnih cevovodov LLM z DSPy in LangChain za izboljšane DevOps

3 months ago · b4n1 Read time: 4 min

Urejanje obsežnih cevovodov LLM z DSPy in LangChain za izboljšane DevOps

Uvod

Pojav velikih jezikovnih modelov (LLM) je revolucioniral področje obdelave naravnega jezika (NLP) in umetne inteligence (AI). Vendar pa z večanjem kompleksnosti in obsega sistemov, ki temeljijo na LLM, narašča tudi potreba po robustnih in učinkovitih orodjih za orkestracijo in avtomatizacijo. V tem članku se bomo poglobili v svet DSPy in LangChain, dveh močnih okvirov, ki omogočata gradnjo prožnih in razširljivih programskih sistemov v dobi umetne inteligence.

Izziv obsežnih cevovodov LLM

Obsežni cevovodi LLM vključujejo več komponent, vključno s predhodno obdelavo podatkov, usposabljanjem modela in sklepanjem. Ti cevovodi so lahko zapleteni, z veliko odvisnostmi in interakcijami med različnimi komponentami. Ko se obseg teh cevovodov povečuje, se povečuje tudi tveganje za napake, zamude in ozka grla virov.

Vnesite DSPy in LangChain

DSPy in LangChain sta dva ogrodja, katerih namen je poenostaviti orkestracijo in avtomatizacijo obsežnih cevovodov LLM. DSPy je ogrodje, ki temelji na Pythonu in zagotavlja preprost in učinkovit način za gradnjo in upravljanje kompleksnih podatkovnih cevovodov, medtem ko je LangChain ogrodje, ki omogoča gradnjo razširljivih in odpornih sistemov AI.

DSPy: ogrodje za podatkovne cevovode, ki temelji na Pythonu

DSPy je ogrodje, ki temelji na Pythonu in zagotavlja preprost in učinkovit način za gradnjo in upravljanje kompleksnih podatkovnih cevovodov. Z DSPy lahko razvijalci ustvarijo podatkovne cevovode, ki so razširljivi, odporni in enostavni za vzdrževanje.

Tukaj je primer preprostega podatkovnega cevovoda, zgrajenega z DSPy:

uvozite dspy kot dsp


data_source = dsp.Source(
    name="moj_vir_podatkov",
    tip="csv",
    pot="/pot/do/data.csv"
)

# Določite obdelovalca podatkov
podatkovni_procesor = dsp.Procesor(
    name="my_data_processor",
    type="pande",
    func=lambda x: x.dropna()
)

# Definirajte ponor podatkov
data_sink = dsp.Sink(
    name="my_data_sink",
    tip="csv",
    pot="/pot/do/izhoda.csv"
)

# Ustvarite podatkovni cevovod
cevovod = dsp.Pipeline(
    name="my_pipeline",
    viri=[vir_podatkov],
    procesorji=[podatkovni_procesor],
    sinks=[podatkovni_sink]
)

# Zaženite cevovod
pipeline.run()

V tem primeru definiramo vir podatkov, procesor podatkov in ponor podatkov, nato pa ustvarimo cevovod podatkov, ki povezuje te komponente. Cevovod se nato zažene z metodo run().

LangChain: ogrodje za razširljive in odporne sisteme AI

LangChain je ogrodje, ki omogoča gradnjo razširljivih in odpornih sistemov AI. Z LangChain lahko razvijalci ustvarijo sisteme AI, ki jih je enostavno vzdrževati, razširljive in odporne na napake.

Tukaj je primer preprostega sistema AI, zgrajenega z LangChain:

uvozi langchain kot lc

# Določite model
model = lc.Model(
    name="moj_model",
    type="transformator",
    pot="/pot/do/modela"
)

# Določite poziv
poziv = lc.Prompt(
    name="my_prompt",
    text="To je vzorčni poziv"
)

# Ustvarite sistem AI
ai_system = lc.AISystem(
    name="my_ai_system",
    model=model,
    prompt=poziv
)

# Zaženite sistem AI
ai_system.run()

V tem primeru definiramo model, poziv in nato ustvarimo sistem AI, ki povezuje te komponente. Sistem AI se nato zažene z metodo run().

Urejanje obsežnih cevovodov LLM z DSPy in LangChain

Za orkestriranje obsežnih cevovodov LLM z DSPy in LangChain lahko uporabimo naslednji pristop:

  1. Definirajte podatkovni cevovod z uporabo DSPy, ki povezuje več podatkovnih virov, procesorjev in ponorov.
  2. Definirajte sistem AI z uporabo LangChain, ki povezuje več modelov, pozivov in rezultatov.
  3. Uporabite DSPy za upravljanje podatkovnega cevovoda in LangChain za upravljanje sistema AI.
  4. Za načrtovanje izvajanja podatkovnega cevovoda in sistema AI uporabite razporejevalnik, kot je Apache Airflow ali Kubernetes.

Tukaj je primer preprostega orkestracijskega skripta, ki uporablja DSPy in LangChain:

uvozite dspy kot dsp
uvozi langchain kot lc
uvozi apache_airflow kot af

# Definirajte podatkovni cevovod
podatkovni_cevovod = dsp.Cevovod(
    name="my_data_pipeline",
    viri=[dsp.Source(name="my_data_source", type="csv", path="/path/to/data.csv")],
    procesorji=[dsp.Processor(name="my_data_processor", type="pandas", func=lambda x: x.dropna())],
    ponori=[dsp.Sink(name="my_data_sink", type="csv", path="/path/to/output.csv")]
)

# Definirajte sistem AI
ai_system = lc.AISystem(
    name="my_ai_system",
    model=lc.Model(name="my_model", type="transformer", path="/path/to/model"),
    prompt=lc.Prompt(name="my_prompt", text="To je vzorčni poziv")
)

# Načrtujte izvajanje podatkovnega cevovoda in sistema AI
af.schedule_task(
    task_id="moje_opravilo",
    dag_id="moj_dan",
    cevovod=podatkovni_cevovod,
    sistem=ai_sistem
)

V tem primeru definiramo podatkovni cevovod in sistem AI z uporabo DSPy in LangChain, nato pa načrtujemo izvajanje teh komponent z uporabo Apache Airflow.

5–10 najbolj uporabljenih ukazov/izrezkov

Tukaj je 5-10 najbolj uporabljenih ukazov/delčkov za DSPy in LangChain:

  1. dsp.Pipeline(name="my_pipeline", sources=[source], processors=[processor], sinks=[sink])
  2. lc.Model(name="my_model", type="transformer", path="/path/to/model")
  3. lc.Prompt(name="my_prompt", text="To je vzorčni poziv")
  4. dsp.Source(name="my_data_source", type="csv", path="/path/to/data.csv")
  5. dsp.Processor(name="my_data_processor", type="pandas", func=lambda x: x.dropna())
  6. dsp.Sink(name="my_data_sink", type="csv", path="/path/to/output.csv")
  7. lc.AISystem(name="my_ai_system", model=model, prompt=prompt)
  8. af.schedule_task(task_id="my_task", dag_id="my_dag", pipeline=pipeline, system=system)
  9. dsp.run_pipeline(cevovod)
  10. lc.run_system(system)

Vizualizacija

Tukaj je vizualizacija ogrodij DSPy in LangChain z uporabo Chart.js:

{
  "vrsta": "bar",
  "podatki": {
    "oznake": ["DSPy", "LangChain"],
    "nabori podatkov": [
      {
        "label": "Funkcije",
        "podatki": [10, 15],
        "Barva ozadja": [
          "rgba(255, 99, 132, 0,2)",
          "rgba(54, 162, 235, 0,2)"
        ],
        "borderColor": [
          "rgba(255, 99, 132, 1)",
          "rgba(54, 162, 235, 1)"
        ],
        "borderWidth": 1
      }
    ]
  },
  "možnosti": {}
}

Ta vizualizacija prikazuje število funkcij v DSPy in LangChain.

Sklep

Skratka, DSPy in LangChain sta dva močna ogrodja, ki omogočata gradnjo prožnih in razširljivih programskih sistemov v dobi umetne inteligence. Z uporabo teh okvirov lahko razvijalci ustvarijo obsežne cevovode LLM, ki jih je enostavno vzdrževati, razširljive in odporne na napake. S pomočjo orodij za orkestracijo in avtomatizacijo, kot sta Apache Airflow in Kubernetes, lahko razvijalci načrtujejo izvajanje teh cevovodov in sistemov, kar olajša upravljanje kompleksnih sistemov AI.

Prihodnje delo

Prihodnje delo vključuje:

  1. Razvijanje več funkcij za DSPy in LangChain.
  2. Izboljšanje zmogljivosti in razširljivosti DSPy in LangChain.
  3. Razvoj več orodij za orkestracijo in avtomatizacijo za DSPy in LangChain.
  4. Ustvarjanje več vizualizacij in nadzornih plošč za DSPy in LangChain.

Reference

  1. Dokumentacija DSPy: https://dspy.readthedocs.io/en/latest/
  2. Dokumentacija LangChain: https://langchain.readthedocs.io/en/latest/
  3. Dokumentacija Apache Airflow: https://airflow.apache.org/docs/apache-airflow/stable/index.html
  4. Dokumentacija Kubernetes: https://kubernetes.io/docs/home/

Have Questions?

Let's Talk

Contact me on LinkedIn