XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

Fix load AnyProvider models

a419e20f
hlohaus <983577+hlohaus@users.noreply.github.com>
提交于

代码差异

2 个文件 +27 -27
Modified g4f/Provider/search/GoogleAiMode.py +21 -22
@@ -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.")
Modified g4f/gui/server/api.py +6 -5
@@ -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 []