supported g4f (gpt4free)

This commit is contained in:
harry 2024-03-18 17:01:09 +08:00
parent 74e634d64c
commit 59ae82a47d
3 changed files with 56 additions and 33 deletions

View File

@ -2,6 +2,7 @@ import logging
import re
import json
from typing import List
import g4f
from loguru import logger
from openai import OpenAI
@ -9,7 +10,19 @@ from app.config import config
def _generate_response(prompt: str) -> str:
content = ""
llm_provider = config.app.get("llm_provider", "openai")
logger.info(f"llm provider: {llm_provider}")
if llm_provider == "g4f":
model_name = config.app.get("g4f_model_name", "")
if not model_name:
model_name = "gpt-3.5-turbo-16k-0613"
content = g4f.ChatCompletion.create(
model=model_name,
messages=[{"role": "user", "content": prompt}],
)
else:
if llm_provider == "moonshot":
api_key = config.app.get("moonshot_api_key")
model_name = config.app.get("moonshot_model_name")
@ -24,6 +37,7 @@ def _generate_response(prompt: str) -> str:
api_key = config.app.get("oneapi_api_key")
model_name = config.app.get("oneapi_model_name")
base_url = config.app.get("oneapi_base_url", "")
model_name = config.app.get("g4f_model_name")
else:
raise ValueError("llm_provider is not set, please set it in the config.toml file.")
@ -41,9 +55,12 @@ def _generate_response(prompt: str) -> str:
response = client.chat.completions.create(
model=model_name,
messages=[{"role": "user", "content": prompt}],
).choices[0].message.content
return response
messages=[{"role": "user", "content": prompt}]
)
if response:
content = response.choices[0].message.content
return content
def generate_script(video_subject: str, language: str = "zh-CN", paragraph_number: int = 1) -> str:
@ -160,6 +177,6 @@ if __name__ == "__main__":
script = generate_script(video_subject=video_subject, language="zh-CN", paragraph_number=1)
# print("######################")
# print(script)
search_terms = generate_terms(video_subject=video_subject, video_script=script, amount=5)
# search_terms = generate_terms(video_subject=video_subject, video_script=script, amount=5)
# print("######################")
# print(search_terms)

View File

@ -5,7 +5,7 @@
# For example: pexels_api_keys = ["123456789","abcdefghi"]
pexels_api_keys = []
llm_provider="openai" # "openai" or "moonshot" or "oneapi"
llm_provider="openai" # "openai" or "moonshot" or "oneapi" or "g4f"
# OpenAI API Key
# Visit https://openai.com/api/ for details on obtaining an API key.
@ -25,6 +25,11 @@
oneapi_base_url=""
oneapi_model_name=""
# G4F
# Visit https://github.com/xtekky/gpt4free to get more details
# Supported model list: https://github.com/xtekky/gpt4free/blob/main/g4f/models.py
g4f_model_name = "gpt-3.5-turbo-16k-0613"
# Subtitle Provider, "edge" or "whisper"
# If empty, the subtitle will not be generated
subtitle_provider = "edge"

View File

@ -12,3 +12,4 @@ aiohttp~=3.9.3
urllib3~=2.2.1
pillow~=10.2.0
pydantic~=2.6.3
g4f~=0.2.5.4