Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
|
@@ -4,7 +4,7 @@ import gradio as gr
|
|
| 4 |
from browser_use import Agent
|
| 5 |
from langchain_openai import ChatOpenAI
|
| 6 |
|
| 7 |
-
# 1. Функция для установки браузера
|
| 8 |
async def install_playwright():
|
| 9 |
process = await asyncio.create_subprocess_exec(
|
| 10 |
'playwright', 'install', 'chromium',
|
|
@@ -15,20 +15,22 @@ async def install_playwright():
|
|
| 15 |
|
| 16 |
# 2. Основная функция агента
|
| 17 |
async def run_browser_agent(task):
|
| 18 |
-
# ПЫТАЕМСЯ ВЗЯТЬ КЛЮЧ ИЗ СЕКРЕТОВ (Settings -> Variables and secrets)
|
| 19 |
api_key = os.getenv("NVIDIA_API_KEY")
|
| 20 |
|
| 21 |
if not api_key:
|
| 22 |
-
return "ОШИБКА: Секрет 'NVIDIA_API_KEY' не найден в
|
| 23 |
|
| 24 |
try:
|
| 25 |
-
#
|
| 26 |
llm = ChatOpenAI(
|
| 27 |
model="meta/llama-3.1-405b-instruct",
|
| 28 |
openai_api_key=api_key,
|
| 29 |
base_url="https://integrate.api.nvidia.com/v1"
|
| 30 |
)
|
| 31 |
|
|
|
|
|
|
|
|
|
|
| 32 |
agent = Agent(
|
| 33 |
task=task,
|
| 34 |
llm=llm,
|
|
@@ -38,22 +40,24 @@ async def run_browser_agent(task):
|
|
| 38 |
)
|
| 39 |
|
| 40 |
result = await agent.run()
|
|
|
|
| 41 |
return str(result.final_result())
|
|
|
|
| 42 |
except Exception as e:
|
| 43 |
return f"Произошла ошибка: {str(e)}"
|
| 44 |
|
| 45 |
-
# Устан
|
| 46 |
-
|
|
|
|
|
|
|
|
|
|
| 47 |
|
| 48 |
-
# 3. Интерфейс Gradio
|
| 49 |
demo = gr.Interface(
|
| 50 |
fn=lambda task: asyncio.run(run_browser_agent(task)),
|
| 51 |
-
inputs=[
|
| 52 |
-
gr.Textbox(label="Что должен сделать агент?", placeholder="Например: Найди цену золота на сегодня")
|
| 53 |
-
],
|
| 54 |
outputs=gr.Textbox(label="Результат"),
|
| 55 |
-
title="Browser-Use AI (
|
| 56 |
-
description="Агент берет ключ из Secrets и использует NVIDIA API."
|
| 57 |
)
|
| 58 |
|
| 59 |
if __name__ == "__main__":
|
|
|
|
| 4 |
from browser_use import Agent
|
| 5 |
from langchain_openai import ChatOpenAI
|
| 6 |
|
| 7 |
+
# 1. Функция для установки браузера
|
| 8 |
async def install_playwright():
|
| 9 |
process = await asyncio.create_subprocess_exec(
|
| 10 |
'playwright', 'install', 'chromium',
|
|
|
|
| 15 |
|
| 16 |
# 2. Основная функция агента
|
| 17 |
async def run_browser_agent(task):
|
|
|
|
| 18 |
api_key = os.getenv("NVIDIA_API_KEY")
|
| 19 |
|
| 20 |
if not api_key:
|
| 21 |
+
return "ОШИБКА: Секрет 'NVIDIA_API_KEY' не найден в Settings -> Secrets!"
|
| 22 |
|
| 23 |
try:
|
| 24 |
+
# Создаем модель
|
| 25 |
llm = ChatOpenAI(
|
| 26 |
model="meta/llama-3.1-405b-instruct",
|
| 27 |
openai_api_key=api_key,
|
| 28 |
base_url="https://integrate.api.nvidia.com/v1"
|
| 29 |
)
|
| 30 |
|
| 31 |
+
# ХАК: Вручную добавляем атрибут, который требует browser-use
|
| 32 |
+
llm.provider = "openai"
|
| 33 |
+
|
| 34 |
agent = Agent(
|
| 35 |
task=task,
|
| 36 |
llm=llm,
|
|
|
|
| 40 |
)
|
| 41 |
|
| 42 |
result = await agent.run()
|
| 43 |
+
# Возвращаем финальный результат как строку
|
| 44 |
return str(result.final_result())
|
| 45 |
+
|
| 46 |
except Exception as e:
|
| 47 |
return f"Произошла ошибка: {str(e)}"
|
| 48 |
|
| 49 |
+
# Установка браузера при старте (один раз)
|
| 50 |
+
try:
|
| 51 |
+
asyncio.run(install_playwright())
|
| 52 |
+
except:
|
| 53 |
+
pass
|
| 54 |
|
| 55 |
+
# 3. Интерфейс Gradio
|
| 56 |
demo = gr.Interface(
|
| 57 |
fn=lambda task: asyncio.run(run_browser_agent(task)),
|
| 58 |
+
inputs=[gr.Textbox(label="Задание", placeholder="Например: какая погода в Киеве?")],
|
|
|
|
|
|
|
| 59 |
outputs=gr.Textbox(label="Результат"),
|
| 60 |
+
title="Browser-Use AI (Fixed Version)"
|
|
|
|
| 61 |
)
|
| 62 |
|
| 63 |
if __name__ == "__main__":
|