Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
prompt = ChatPromptTemplate.from_messages([
("system",
"Follow USER instructions exactly. Output ONLY what the USER requests. "
"No explanations, no reasoning, no preamble."),
("human",
"Task: In ONE concise sentence, say what this web page is about.\n"
'Return EXACT JSON: {{"answer": "<one sentence>"}}\n\n'
"HTML:\n```html\n{html}\n```\n\nAnswer:")
])
def render_get_html(url: str) -> str:
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
ctx = browser.new_context()
page = ctx.new_page()
page.goto(url, wait_until="networkidle")
page.wait_for_timeout(800) # milliseconds
html = page.content()
browser.close()
return html
def compact_rendered_html(full_html: str, max_chars: int = 20000) -> str:
"""Remove scripts/styles, collapse whitespace."""
soup = BeautifulSoup(full_html, "html.parser")
for t in soup(["script", "style", "noscript"]):
t.decompose()
text = str(soup)
text = re.sub(r"\s+", " ", text)
return text[:max_chars]
chat = ChatOllama(
model="qwen3:8b",
temperature=0.4,
top_p=0.9,
repeat_penalty=1.1,
format="json", # ask model to emit JSON
stop=["<think>", "</think>"], # suppress chain-of-thought tags
num_ctx=8192,
num_predict=64,
seed=42
)
Попробовал подход. Модель давится контекстом. Срабатывает раз из десяти - если простая страница.Вот немного деталей
Если парсишь откуда то - лучше делать классический парсер и отдавать модели чистый текст или хтмл. В случае если данные собираются с пачки сайтов ил нужен гибкий препроцессинг можно просто отдавать ей страницу с нужными инструкциями. Такой себе агентский режим из кода.
Python:prompt = ChatPromptTemplate.from_messages([ ("system", "Follow USER instructions exactly. Output ONLY what the USER requests. " "No explanations, no reasoning, no preamble."), ("human", "Task: In ONE concise sentence, say what this web page is about.\n" 'Return EXACT JSON: {{"answer": "<one sentence>"}}\n\n' "HTML:\n```html\n{html}\n```\n\nAnswer:") ])
Я убираю ненужное чтобы не перегружать модель, тут еще нужна доработка.
Python:def render_get_html(url: str) -> str: with sync_playwright() as p: browser = p.chromium.launch(headless=True) ctx = browser.new_context() page = ctx.new_page() page.goto(url, wait_until="networkidle") page.wait_for_timeout(800) # milliseconds html = page.content() browser.close() return html def compact_rendered_html(full_html: str, max_chars: int = 20000) -> str: """Remove scripts/styles, collapse whitespace.""" soup = BeautifulSoup(full_html, "html.parser") for t in soup(["script", "style", "noscript"]): t.decompose() text = str(soup) text = re.sub(r"\s+", " ", text) return text[:max_chars]
Запускаю Qwen3:8B в таком конфиге - работает быстрее. Качество устраивает, но если больше 20к символов загружать выдает ошибку. При базовых настройках выдает бред в ответе - игнорирует команды из промпта.
Python:chat = ChatOllama( model="qwen3:8b", temperature=0.4, top_p=0.9, repeat_penalty=1.1, format="json", # ask model to emit JSON stop=["<think>", "</think>"], # suppress chain-of-thought tags num_ctx=8192, num_predict=64, seed=42 )