返回提交历史
Modified
g4f/Provider/search/GoogleAiMode.py
+21
-22
Modified
g4f/gui/server/api.py
+6
-5
XFEstudio/gpt4free
Fix load AnyProvider models
a419e20f
代码差异
2 个文件
+27
-27
@@ -55,35 +55,34 @@ class GoogleAiMode(GoogleSearch):
55
55
56
56
try:
57
57
for _ in range(5):
58
result = await session.evaluate_js("""const b = Array.from(document.querySelectorAll("a, button")).filter(a => {
58
await session.evaluate_js("""const b = Array.from(document.querySelectorAll("a, button")).filter(a => {
59
59
return a.textContent.endsWith("KI‑Modus") || a.textContent.endsWith("AI Mode");
60
60
}).pop(); b ? b.click() : null; !!b""")
61
await asyncio.sleep(1)
62
if not result:
63
continue
64
61
await session.wait_for_network_idle(idle_time=1, timeout=10.0)
65
results = await session.call("Runtime.evaluate", expression=r"""
62
result = await session.evaluate_js("""
66
63
const rootElement = document.querySelector('[decode-data-ved="1"]');
67
const allElements = rootElement.querySelectorAll('*');
68
const textNodes = [];
69
Array.from(allElements).forEach(el => {
70
for (const child of el.childNodes) {
64
function getTextNodes(element) {
65
const textNodes = [];
66
for (const child of element.childNodes) {
71
67
if (child.nodeType === Node.TEXT_NODE && child.textContent) {
72
const trimedText = child.textContent.trim();
73
if ([
74
"KI-Antworten können Fehler enthalten.",
75
"AI responses may include mistakes."].includes(trimedText)) {
76
break;
77
}
78
68
textNodes.push(child);
79
}
69
} else {
70
textNodes.push(...getTextNodes(child));
71
}
80
72
}
81
});
82
textNodes.map(n => n.textContent).filter(Boolean);
83
""", returnByValue=True);
84
debug.log(f"Google Search: AI mode results: {results}")
85
if results:
86
for text in results.get("result", {}).get("value", []):
73
return textNodes;
74
}
75
const allTexts = [];
76
for (const text of getTextNodes(rootElement).map(node => node.textContent)) {
77
if (text.includes("KI-Antworten können Fehler enthalten.") || text.includes("AI responses may include mistakes.")) {
78
break;
79
}
80
allTexts.push(text);
81
}
82
allTexts;""");
83
debug.log(f"Google Search: AI mode results: {result}")
84
if result:
85
for text in result:
87
86
yield f"{text}\n"
88
87
return
89
88
raise RuntimeError("No AI mode results found.")
@@ -29,7 +29,7 @@ from ...providers.any_model_map import model_map
29
29
from ...providers.any_provider import AnyProvider
30
30
from ...providers.cache import FileStorage
31
31
from ...version import utils as version_utils
32
from ... import Provider
32
from ...Provider import ProviderLoader
33
33
from ... import debug
34
34
35
35
logger = logging.getLogger(__name__)
@@ -65,9 +65,8 @@ class Api:
65
65
else provider.models_tags.get(model_id, []),
66
66
**(model if isinstance(model, dict) else {}),
67
67
}
68
69
if provider in Provider.__map__:
70
provider = Provider.__map__[provider]
68
try:
69
provider = ProviderLoader.from_name(provider)
71
70
if issubclass(provider, ProviderModelMixin):
72
71
has_grouped_models = hasattr(provider, "get_grouped_models")
73
72
method = (
@@ -106,7 +105,9 @@ class Api:
106
105
models.values() if isinstance(models, dict) else models
107
106
)
108
107
]
109
elif provider in model_map:
108
except ImportError as e:
109
debug.log(f"Error getting provider models for {provider}:", e)
110
if provider in model_map:
110
111
return [get_model_data(AnyProvider, provider, True)]
111
112
112
113
return []