Ruka hadi maudhui makuu
Mafunzo ya AI

Jenga Mawakala wa LLM Wanaotumia Zana na Kujiboresha kwa miniEvoAgent

Mafunzo haya yanatambulisha miniEvoAgent, mfumo unaosomeka wa kujenga mawakala wa LLM wanaotekeleza kitendo kimoja, kuendesha zana za Python, kutathmini utabiri wa QA, na kuboresha vidokezo kutokana na mrejesho. Utaweka kifurushi cha evo_repro, kusanidi modeli inayooana na OpenAI, kuendesha mawakala wa kawaida na wanaotumia zana, kuchunguza vifuatilizi vya mageuzi, na kujaribu mfumo bila miito ya modeli za mbali.

Jenga Mawakala wa LLM Wanaotumia Zana na Kujiboresha kwa miniEvoAgent

miniEvoAgent ni nini?

miniEvoAgent ni mfumo mdogo wa Python wa kujifunza jinsi mawakala wanaotumia LLM hujengwa na kuboreshwa. Ukiongozwa na EvoAgentX, unahifadhi dhana kuu za utekelezaji wa wakala, kuita zana, tathmini, uandishi upya wa vidokezo, na kujiboresha huku ukiondoa ugumu wa mfumo mkubwa wa mawakala.

Kifurushi hiki kwa sasa kinaitwa evo_repro. Muundo wake mdogo uliokusudiwa hufanya kila utaratibu kuwa rahisi kusoma, kujaribu, na kupanua. Badala ya kutoa grafu za mtiririko wa kazi, kumbukumbu, vihariri vya kuona, viunganishi vya vigezo vya majaribio, au mfumo mkubwa wa zana, inalenga wakala wa uwazi wa kitendo kimoja na mzunguko wa kubadilisha vidokezo.

Jinsi mfumo huu unavyofanya kazi

Programu ya miniEvoAgent huundwa kwa vipengele vichache vinavyolenga kazi maalum:

  • PromptTemplate: Huinserti pembejeo za kazi katika kiolezo cha kidokezo.
  • Action: Huita LLM, kwa hiari hufanya utekelezaji wa zana katika awamu nyingi, na kuchanganua jibu la mwisho.
  • Agent: Hufunga kitendo na kurudisha ujumbe wenye muundo.
  • Evaluator functions: Hupima utabiri wa QA kwa ulinganifu kamili, F1 ya kiwango cha tokeni, na usahihi.
  • PromptRewriter: Hutumia LLM ya uboreshaji kupendekeza kidokezo kilichorekebishwa kutokana na mifano halisi ya mrejesho.
  • PromptSelector: Hulinganisha kidokezo mzazi na pendekezo lake kwenye seti ileile ya uendelezaji na kuhifadhi kinachofanya vizuri zaidi.
  • evolve: Hurudia utekelezaji wa mafunzo, uundaji wa mrejesho, uandishi upya, tathmini, na uteuzi.

Vipengele muhimu

  • Muundo mdogo na unaoweza kukaguliwa wa wakala wa kitendo kimoja.
  • Kibadilishaji cha LLM kinachooana na OpenAI, kinachosanidiwa kupitia vigezo vya mazingira au faili ya ndani ya .env.
  • Zana za vitendaji za mtindo wa OpenAI zenye utekelezaji wa zana katika awamu nyingi.
  • Uandishi upya wa vidokezo unaoendeshwa na mrejesho kupitia LLM ya uboreshaji.
  • Uteuzi kwenye seti ya uendelezaji unaokubali pendekezo pale tu linapoboresha alama.
  • Alama za mageuzi zenye utekelezaji wa mafunzo, pembejeo za uandishi upya, alama za uendelezaji, na maamuzi ya uteuzi.
  • LLM bandia zinazoweza kutabirika kwa ajili ya kujaribu tabia ya mfumo bila kuita API za mbali.

Sakinisha miniEvoAgent

Mahitaji

Tumia Python 3.10 au mpya zaidi. Amri zifuatazo za PowerShell huingia kwenye hazina, huunda mazingira pepe, huyawasha, husasisha pip, na kusakinisha kifurushi katika hali ya kuhaririwa:

cd D:\Projects\RSIProject\student-project\Evo-repro
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -U pip
python -m pip install -e .

Usakinishaji wa kuhaririwa ni muhimu unapojifunza au kurekebisha msimbo chanzo kwa sababu mabadiliko ya kifurushi cha ndani hupatikana mara moja katika mazingira yako ya Python.

Sanidi LLM inayoendana na OpenAI

Kibadilishaji chaguomsingi cha OpenAILLM husoma mipangilio yake kutoka kwa vigezo vya mazingira au faili ya ndani ya .env. Katika PowerShell, weka ufunguo wa API na modeli kama ifuatavyo:

$env:OPENAI_API_KEY="your_api_key"
$env:OPENAI_MODEL="gpt-4o-mini"

Ukitumia huduma nyingine inayooana na OpenAI, weka kituo chake:

$env:OPENAI_BASE_URL="https://your-compatible-endpoint/v1"

Vinginevyo, nakili .env.example kuwa .env na uongeze thamani zilezile za usanidi.

Jenga wakala msingi wa maswali na majibu

Wakala msingi anahitaji LLM, kiolezo cha kidokezo, kichanganua matokeo, na kitendo. Kisha wakala huweka sehemu hizi kupitia kiolesura rahisi cha utekelezaji.

from evo_repro import Action, Agent, OpenAILLM, PromptTemplate, TextOutputParser

llm = OpenAILLM()

action = Action(
    name="answer_question",
    prompt_template=PromptTemplate(
        template="Answer the following question:\n\n{question}"
    ),
    llm=llm,
    output_parser=TextOutputParser(),
)

agent = Agent(
    name="qa_agent",
    description="Answers a single user question.",
    action=action,
)

message = agent.execute({
    "question": "What is Retrieval-Augmented Generation?"
})
print(message.content)

Ufunguo wa question unaotolewa kwa agent.execute unalingana na kishikilia nafasi cha {question} katika kiolezo. Kitendo hutoa kidokezo, hukituma kwa LLM iliyosanidiwa, huchanganua maandishi yaliyorejeshwa, na kufunga matokeo katika ujumbe wenye muundo.

Pia unaweza kuendesha mfano uliounganishwa:

python examples\simple_agent.py

Ongeza zana ya Python inayoweza kuitwa

Zana za miniEvoAgent ni vifungashio vyepesi vinavyozunguka vitendaji vya Python. Kila zana hutoa skimu ya JSON ambayo modeli inaweza kutumia kwa kuita vitendaji na kurudisha ToolResult yenye muundo.

Kifurushi hiki kinajumuisha get_word_length_tool, ambayo inaweza kuambatanishwa na kitendo kupitia hoja yake ya tools:

from evo_repro import Action, Agent, OpenAILLM, PromptTemplate, TextOutputParser
from evo_repro import get_word_length_tool

agent = Agent(
    name="tool_agent",
    description="Answers a question and can use tools.",
    action=Action(
        name="answer_with_tools",
        prompt_template=PromptTemplate(
            template=(
                "Answer the following question. "
                "Use tools when useful:\n\n{question}"
            )
        ),
        llm=OpenAILLM(),
        output_parser=TextOutputParser(),
        tools=[get_word_length_tool],
    ),
)

message = agent.execute({
    "question": 'How many characters are in "retrieval"?'
})

print(message.content)
print(message.metadata["tool_results"])

LLM inapoomba chaguo la kukokotoa linalotumika, kitendo hulitekeleza na kurejesha matokeo ya zana kwenye mazungumzo. Kitendo hiki kinaunga mkono raundi nyingi za mchakato huu kabla ya kuchanganua matokeo ya mwisho ya modeli. Rekodi za utekelezaji wa zana zinapatikana kupitia message.metadata["tool_results"].

Endesha mfano wa zana uliojumuishwa kwa:

python examples\tool_agent.py

Elewa kujiboresha kwa kidokezo

Mfumo wa kujiboresha huboresha kidokezo kupitia mzunguko unaodhibitiwa wa mrejesho na tathmini:

  1. Endesha kidokezo cha sasa kwenye mifano ya mafunzo.
  2. Geuza utabiri, lebo zinazotarajiwa na vipimo vya tathmini kuwa mifano ya mrejesho.
  3. Omba PromptRewriter inayotumia LLM ya uboreshaji izalishe kidokezo kimoja cha mgombea.
  4. Tathmini kidokezo kikuu na kidokezo cha mgombea kwenye seti ileile ya uundaji.
  5. Tumia PromptSelector kuhifadhi kidokezo bora zaidi.
  6. Rudia mchakato kwa idadi iliyosanidiwa ya vizazi.

Tumia evolve_once(...) unapotaka kuendesha kizazi kimoja. Hurejesha EvolutionRoundTrace. Tumia evolve(...) kuendesha vizazi vingi na kupokea kidokezo cha mwisho pamoja na historia kamili.

Kagua mchakato wa uboreshaji bila modeli ya mbali

Hazina inajumuisha mfano wa ukaguzi unaoweza kurudiwa unaotumia tabia ghushi ya LLM:

python examples\evolution_audit.py

Matokeo yanaonyesha kidokezo kikuu cha kila kizazi, rekodi za mafunzo, ingizo la uandishi upya, kidokezo cha mgombea, ulinganisho wa seti ya uundaji, na uamuzi wa kukubali au kukataa. Hii huwezesha kukagua mchakato wa uboreshaji badala ya kuuchukulia uboreshaji wa vidokezo kama operesheni iliyofichika.

Tathmini utabiri wa QA

Vitathmini vilivyojengwa ndani vinatoa vipimo vitatu vilivyorahisishwa kwa makusudi vya QA:

  • Ulinganifu kamili: Hukagua ikiwa utabiri unalingana kabisa na jibu linalotarajiwa kulingana na namna ya ulinganishaji ya kitathmini.
  • F1 katika kiwango cha tokeni: Hupima mwingiliano wa tokeni kati ya utabiri na jibu linalotarajiwa.
  • Usahihi: Huripoti uwiano wa utabiri sahihi.

Vipimo hivi vimeundwa ili kuthibitisha na kuonyesha mzunguko wa uboreshaji. Maelezo ya mradi yanaeleza kuwa baadaye vinaweza kubadilishwa na vitathmini vinavyofaa kwa benchi au kazi mahususi.

Endesha seti ya majaribio

Tekeleza majaribio yote kutoka kwenye mzizi wa hazina:

python -m pytest

Seti ya majaribio lengwa inahusisha mawakala, zana na tabia ya uboreshaji. Utekelezaji ghushi wa LLM hutumiwa inapowezekana, hivyo mantiki nyingi ya mfumo inaweza kuthibitishwa bila ufunguo wa API au mwito wa modeli ya mbali.

Vidokezo vya kina

Tumia majaribio yanayoweza kurudiwa kabla ya majaribio ya moja kwa moja

Anza na mifano na majaribio ya LLM ghushi unapobadilisha uteuzi wa vidokezo, ushughulikiaji wa zana au mantiki ya uboreshaji. Matokeo yanayoweza kurudiwa hufanya hitilafu ziwe rahisi kuzalisha tena na kusaidia kutenganisha hitilafu za mfumo na tofauti katika majibu ya modeli za moja kwa moja.

Kagua ufuatiliaji katika kila kizazi

Usitathmini mchakato wa uboreshaji kwa kuangalia kidokezo cha mwisho pekee. Kagua utekelezaji wa mafunzo uliorekodiwa, mrejesho uliotolewa kwa mwandishi upya, kidokezo cha mgombea, alama za uundaji na uamuzi wa uteuzi. Rekodi hizi hufichua kwa nini mgombea ulikubaliwa au kukataliwa.

Weka majukumu ya mafunzo na uundaji yakiwa tofauti

Mchakato wa uboreshaji huunda mrejesho wa uandishi upya kutoka kwa mifano ya mafunzo, lakini hulinganisha kidokezo kikuu na cha mgombea kwenye seti ileile ya uundaji. Dumisha mgawanyo huu unapowatayarisha majaribio ili uteuzi ufuate mchakato uliokusudiwa na mfumo.

Kagua matokeo ya zana yaliyopangwa

Kwa mawakala wanaowezeshwa na zana, kagua message.metadata["tool_results"] pamoja na maandishi ya mwisho. Hii husaidia kuthibitisha ikiwa modeli ilichagua zana, ikiwa utekelezaji ulifanikiwa, na ni matokeo gani yaliyopangwa yaliyorejeshwa.

Tumia kituo maalum kinachooana inapohitajika

Mpangilio wa OPENAI_BASE_URL huwezesha OpenAILLM kulenga kituo kinachooana na OpenAI. Weka ufunguo wa API na modeli iliyochaguliwa zilingane na mahitaji ya kituo hicho.

Elewa upeo wa sasa wa mradi

miniEvoAgent imewekewa upeo mdogo kwa makusudi kuliko EvoAgentX. Kwa sasa haidai kuwa na grafu za mtiririko wa kazi, upangaji wa mawakala wengi, kumbukumbu, vipengele vya binadamu-katika-mzunguko, ujumuishaji wa benchi, uhariri wa kuona au zana pana. Ramani ya maendeleo inajumuisha uundaji bora zaidi wa mtiririko wa kazi, adapta zaidi za watoa huduma, vipakiaji vya benchi, zana zinazoweza kutumika tena, uhifadhi wa JSON na nyaraka za ziada, lakini hivi ni vilivyopangwa, si vipengele vya sasa.

Angalia leseni kabla ya kusambaza tena

Kwa sasa hakuna faili la leseni lililojumuishwa kwenye mradi. Ongeza leseni linalofaa kabla ya kuchapisha au kusambaza tena msimbo.

Hitimisho

miniEvoAgent hutoa njia ndogo inayoweza kujaribiwa ya kuingia katika uhandisi wa mawakala wa LLM. Kwa kutumia kifurushi cha evo_repro, unaweza kuunda wakala unaoendeshwa na kidokezo, kuongeza zana za chaguo la kukokotoa za mtindo wa OpenAI, kupima utendaji wa QA, kuandika upya vidokezo kutokana na hitilafu, na kuhifadhi maboresho kupitia tathmini ya seti ya uundaji. Muundo wake mfupi na mifano inayoweza kurudiwa huufanya uwe muhimu hasa kwa kuchunguza jinsi utekelezaji wa mawakala na uboreshaji wa vidokezo unavyofanya kazi ndani.