返回提交历史
Modified
g4f/gui/server/api.py
+1
-0
Modified
g4f/mcp/pa_provider.py
+2
-1
Modified
projects/discord-bot/bot.py
+5
-5
XFEstudio/gpt4free
Enhance API and bot functionality by adding model handling and improving logging; update image model configuration
a61e180b
代码差异
3 个文件
+8
-6
@@ -178,6 +178,7 @@ class Api:
178
178
debug.log = decorated_log
179
179
proxy = os.environ.get("G4F_PROXY")
180
180
try:
181
model = kwargs.get("model")
181
182
provider_handler = provider or AnyProvider
182
183
provider = provider_handler.__name__ if provider_handler else provider
183
184
if "user" in kwargs:
@@ -88,6 +88,7 @@ def is_hidden_file(path: str) -> bool:
88
88
89
89
#: Modules that are allowed inside the safe execution sandbox.
90
90
SAFE_MODULES: FrozenSet[str] = frozenset({
91
"__future__", "concurrent", "warnings", "urllib3", "urllib3.exceptions",
91
92
# Math / numeric
92
93
"math", "cmath", "decimal", "fractions", "statistics", "random", "numbers",
93
94
# String / text
@@ -603,7 +604,7 @@ class PaProviderRegistry:
603
604
except Exception:
604
605
pass
605
606
relative_path = pa_path.relative_to(directory).as_posix()
606
print(f"Loaded PA provider: {provider_id} ({relative_path})")
607
debug.log(f"Loaded PA provider: {provider_id} ({relative_path})")
607
608
if is_hidden_file(relative_path):
608
609
relative_path = None
609
610
entries.append((
@@ -26,7 +26,7 @@ from discord import app_commands
26
26
from discord.ext import commands
27
27
from dotenv import load_dotenv
28
28
29
import g4f.Provider
29
from g4f.providers.any_provider import AnyProvider
30
30
from g4f.client import ClientFactory
31
31
32
32
from mcp_tools import MCPToolManager, ALL_AVAILABLE_TOOLS, SAFE_DEFAULT_TOOLS
@@ -38,6 +38,7 @@ load_dotenv()
38
38
# ---------------------------------------------------------------------------
39
39
TOKEN = os.getenv("DISCORD_TOKEN")
40
40
MODEL = os.getenv("G4F_MODEL", "auto")
41
IMAGE_MODEL = os.getenv("G4F_IMAGE_MODEL", "flux")
41
42
SYSTEM_PROMPT = os.getenv(
42
43
"G4F_SYSTEM_PROMPT",
43
44
"You are a helpful, friendly Discord assistant. Keep answers concise "
@@ -70,7 +71,7 @@ log = logging.getLogger("g4f-discord")
70
71
# ---------------------------------------------------------------------------
71
72
client = ClientFactory.create_async_client(provider="default",
72
73
api_key=os.getenv("G4F_API_KEY"),
73
media_provider=os.getenv("G4F_MEDIA_PROVIDER"))
74
media_provider=os.getenv("G4F_MEDIA_PROVIDER", AnyProvider))
74
75
mcp = MCPToolManager(enabled_tools=ENABLED_TOOLS)
75
76
76
77
# Per-user conversation history: user_id -> deque of {"role", "content"}
@@ -467,7 +468,7 @@ async def image(
467
468
):
468
469
await interaction.response.defer(thinking=True)
469
470
try:
470
m = _normalize_model_name(model) if model else MODEL
471
m = _normalize_model_name(model) if model else IMAGE_MODEL
471
472
generated = await _generate_image(prompt=prompt, model=m)
472
473
except Exception as e:
473
474
log.exception("Image generation failed")
@@ -575,8 +576,7 @@ async def on_message(message: discord.Message):
575
576
try:
576
577
# Create a placeholder then edit/send final result.
577
578
placeholder = await message.channel.send("🖼️ Generating…")
578
m = MODEL
579
generated = await _generate_image(prompt=prompt, model=m)
579
generated = await _generate_image(prompt=prompt, model=IMAGE_MODEL)
580
580
581
581
if generated.startswith("http://") or generated.startswith("https://"):
582
582
embed = discord.Embed(title="🖼️ Generated image")