Κοινή χρήση τεχνολογίας

LangChain - πρότυπο προτροπής για πολυτροπικά μεγάλα μοντέλα

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


1. Πώς να μεταφέρετε απευθείας πολυτροπικά δεδομένα στο μοντέλο

Εδώ δείχνουμε πώς να περάσετε την πολυτροπική είσοδο απευθείας στο μοντέλο. Για άλλους παρόχους μοντέλων που υποστηρίζουν πολυτροπική είσοδο, το langchain παρέχει εγγενή λογική στην κατηγορία για μετατροπή στην επιθυμητή μορφή.
Ο πιο συνηθισμένος τρόπος μετάδοσης σε μια εικόνα είναι ως συμβολοσειρά byte. Αυτό θα πρέπει να λειτουργεί για τα περισσότερα σύνολα μοντέλων.

import base64
import httpx

image_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
image_data = base64.b64encode(httpx.get(image_url).content).decode("utf-8")

message = HumanMessage(
    content=[
        {"type": "text", "text": "describe the weather in this image"},
        {
            "type": "image_url",
            "image_url": {"url": f"data:image/jpeg;base64,{image_data}"},
        },
    ],
)
response = model.invoke([message])
print(response.content)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

Μπορούμε να παρέχουμε απευθείας τη διεύθυνση URL της εικόνας στο μπλοκ περιεχομένου τύπου "image_URL". Σημειώστε, ωστόσο, ότι μόνο ορισμένοι πάροχοι μοντέλων υποστηρίζουν αυτήν τη δυνατότητα.

message = HumanMessage(
    content=[
        {"type": "text", "text": "describe the weather in this image"},
        {"type": "image_url", "image_url": {"url": image_url}},
    ],
)
response = model.invoke([message])
print(response.content)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Μπορούμε επίσης να ανεβάσουμε πολλές εικόνες.

message = HumanMessage(
    content=[
        {"type": "text", "text": "are these two images the same?"},
        {"type": "image_url", "image_url": {"url": image_url}},
        {"type": "image_url", "image_url": {"url": image_url}},
    ],
)
response = model.invoke([message])
print(response.content)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2. Πώς να χρησιμοποιήσετε τις αλληλοτροπικές προτροπές

Εδώ, περιγράφουμε τον τρόπο χρήσης προτύπων προτροπής για τη μορφοποίηση πολυτροπικών εισροών για μοντέλα.

import base64
import httpx

image_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
image_data = base64.b64encode(httpx.get(image_url).content).decode("utf-8")

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "Describe the image provided"),
        (
            "user",
            [
                {
                    "type": "image_url",
                    "image_url": {"url": "data:image/jpeg;base64,{image_data}"},
                }
            ],
        ),
    ]
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

Μπορούμε επίσης να περάσουμε πολλές εικόνες στο μοντέλο.

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "compare the two pictures provided"),
        (
            "user",
            [
                {
                    "type": "image_url",
                    "image_url": {"url": "data:image/jpeg;base64,{image_data1}"},
                },
                {
                    "type": "image_url",
                    "image_url": {"url": "data:image/jpeg;base64,{image_data2}"},
                },
            ],
        ),
    ]
)

chain = prompt | model

response = chain.invoke({"image_data1": image_data, "image_data2": image_data})
print(response.content)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23