File size: 1,619 Bytes
cf7f643
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
"""
baseimg2html: 画像からHTMLコンポーネントを生成。
HF版: VLM (Qwen2.5-VL) を使用。Vertex AI は使用しない。
"""

import os
from typing import List

from pydantic import BaseModel

from src.utils.tracer import customtracer


class newHTMLs(BaseModel):
    HTMLs: List[str]


@customtracer
def baseimg2html(p: str, base64img: str, gcp_key: str = "default") -> dict:
    """
    input1 (text): OCRテキストやページの説明
    input2 (text): base64エンコードされた画像
    input3 (text): default
    output1 (json): HTMLコンポーネントのリスト({"HTMLs": [...]})

    NOTE: HF版は VLM ベース。Vertex AI / GCP は使用しない。
    """
    from src.clients.llm_client import LLMClient

    client = LLMClient()

    system_prompt = (
        "あなたはHTMLとCSSの達人です。"
        "画像とテキスト情報を基に、適切なHTMLコンポーネントを生成してください。"
        "各コンポーネントは完全に機能するHTMLとして生成してください。"
    )

    prompt = (
        system_prompt + "\n\n[テキスト情報]\n" + str(p)
        + "\n\n画像のコンポーネントをHTMLリストとして出力してください。"
    )

    # Strip base64 data-URI prefix if present
    if base64img and "," in base64img:
        base64img = base64img.split(",", 1)[1]

    result = client.call(
        prompt=prompt,
        schema=newHTMLs,
        model="Qwen/Qwen2.5-VL-72B-Instruct",
        images=[base64img] if base64img else None,
        temperature=0.1,
    )
    return result.model_dump()