Buat Ejen LLM Tersuai anda sendiri Menggunakan Model Sumber Terbuka (llama)

PHPz
Lepaskan: 2024-08-18 06:04:35
asal
577 orang telah melayarinya

Create your own Custom LLM Agent Using Open Source Models (llama)

Dalam artikel ini, kami akan mempelajari cara mencipta ejen tersuai yang menggunakan sumber terbuka llm (llama3.1) yang dijalankan secara setempat pada PC kami. Kami juga akan menggunakan Ollama dan LangChain.

Garis besar

  • Pasang Ollama
  • Model tarik
  • Layan model
  • Buat folder baharu, buka dengan editor kod
  • Buat dan aktifkan persekitaran Maya
  • Pasang langchain langchain-ollama
  • Bina ejen Tersuai dengan model sumber terbuka dalam Python
  • Kesimpulan

Pasang Ollama

Ikuti arahan berdasarkan jenis OS anda dalam GitHub README untuk memasang Ollama:

https://github.com/ollama/ollama
Salin selepas log masuk

Saya menggunakan PC berasaskan Linux, jadi saya akan menjalankan arahan berikut dalam terminal saya:

curl -fsSL https://ollama.com/install.sh | sh
Salin selepas log masuk

Model tarik

Ambil model LLM yang tersedia melalui arahan berikut:

ollama pull llama3.1
Salin selepas log masuk

Ini akan memuat turun versi teg lalai model. Biasanya, lalai menunjuk kepada model parameter bersaiz terkecil yang terkini. Dalam kes ini, ia akan menjadi model llama3.1:8b.

Untuk memuat turun versi model yang lain, anda boleh pergi ke: https://ollama.com/library/llama3.1 dan pilih versi untuk dipasang, kemudian jalankan arahan tarik ollama dengan model dan nombor versinya . Contoh: ollama tarik llama3.1:70b

Pada Mac, model akan dimuat turun ke ~/.ollama/models

Di Linux (atau WSL), model akan disimpan di /usr/share/ollama/.ollama/models

Layan model

Jalankan arahan berikut untuk memulakan ollama tanpa menjalankan aplikasi desktop.

ollama serve
Salin selepas log masuk

Semua model dihidangkan secara automatik pada localhost:11434

Buat folder baharu, buka dengan editor kod

Buat folder baharu pada komputer anda dan kemudian buka dengan editor kod seperti Kod VS.

Cipta dan aktifkan persekitaran Maya

Buka terminal. Gunakan arahan berikut untuk mencipta persekitaran maya .venv dan aktifkannya:

python3 -m venv .venv
Salin selepas log masuk
source .venv/bin/activate
Salin selepas log masuk

Pasang langchain langchain-ollama

Jalankan arahan berikut untuk memasang langchain dan langchain-ollama:

pip install -U langchain langchain-ollama
Salin selepas log masuk

Arahan di atas akan memasang atau menaik taraf pakej LangChain dan LangChain-Ollama dalam Python. Bendera -U memastikan bahawa versi terkini pakej ini dipasang, menggantikan mana-mana versi lama yang mungkin sudah ada.

Bina ejen tersuai dengan model sumber terbuka dalam Python

Buat fail Python sebagai contoh: main.py dan tambah kod berikut:

from langchain_ollama import ChatOllama
from langchain.agents import tool
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.agents.format_scratchpad.openai_tools import (
    format_to_openai_tool_messages,
)
from langchain.agents import AgentExecutor
from langchain.agents.output_parsers.openai_tools import OpenAIToolsAgentOutputParser


llm = ChatOllama(
            model="llama3.1",
            temperature=0,
            verbose=True
        )

@tool
def get_word_length(word: str) -> int:
    """Returns the length of a word."""
    return len(word)


tools = [get_word_length]



prompt = ChatPromptTemplate.from_messages(
            [
                (
                    "system",
                    "You are very powerful assistant",
                ),
                ("user", "{input}"),
                MessagesPlaceholder(variable_name="agent_scratchpad"),
            ]
        )

llm_with_tools = llm.bind_tools(tools)

agent = (
    {
        "input": lambda x: x["input"],
        "agent_scratchpad": lambda x: format_to_openai_tool_messages(
            x["intermediate_steps"]
        ),
    }
    | prompt
    | llm_with_tools
    | OpenAIToolsAgentOutputParser()
)

# Create an agent executor by passing in the agent and tools
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({"input": "How many letters in the word educa"})

if result:
    print(f"[Output] --> {result['output']}")
else:
    print('There are no result..')
Salin selepas log masuk

Coretan kod di atas menyediakan ejen LangChain menggunakan model ChatOllama (llama3.1) untuk memproses input pengguna dan menggunakan alat tersuai yang mengira panjang perkataan. Ia mentakrifkan templat segera untuk ejen, mengikat alat kepada model bahasa dan membina ejen yang memproses input dan memformat langkah perantaraan. Akhirnya, ia mencipta AgentExecutor untuk memanggil ejen dengan input tertentu. Kami menghantar soalan mudah untuk bertanya "Berapa banyak huruf dalam perkataan educa" dan kemudian kami mencetak output atau menunjukkan jika tiada hasil ditemui.

Apabila kita berlari, kita mendapat keputusan berikut:

> Entering new AgentExecutor chain...

Invoking: `get_word_length` with `{'word': 'educa'}`


5The word "educa" has 5 letters.

> Finished chain.
[Output] --> The word "educa" has 5 letters.
Salin selepas log masuk

Anda melihat ejen menggunakan model (llama3.1) untuk memanggil alat dengan betul untuk mendapatkan kiraan huruf dalam perkataan.

Kesimpulan

Terima kasih kerana membaca.

Semak repo Ollama di sini: https://github.com/ollama/ollama

Atas ialah kandungan terperinci Buat Ejen LLM Tersuai anda sendiri Menggunakan Model Sumber Terbuka (llama). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!