|
@@ -5,6 +5,7 @@ import warnings
|
|
|
from typing import Any, Literal, Optional, Union
|
|
|
|
|
|
import openai
|
|
|
+from yarl import URL
|
|
|
|
|
|
from core.tools.entities.tool_entities import ToolInvokeMessage
|
|
|
from core.tools.errors import ToolParameterValidationError, ToolProviderCredentialValidationError
|
|
@@ -53,15 +54,24 @@ class PodcastAudioGeneratorTool(BuiltinTool):
|
|
|
if not host1_voice or not host2_voice:
|
|
|
raise ToolParameterValidationError("Host voices are required")
|
|
|
|
|
|
- # Get OpenAI API key from credentials
|
|
|
+ # Ensure runtime and credentials
|
|
|
if not self.runtime or not self.runtime.credentials:
|
|
|
raise ToolProviderCredentialValidationError("Tool runtime or credentials are missing")
|
|
|
+
|
|
|
+ # Get OpenAI API key from credentials
|
|
|
api_key = self.runtime.credentials.get("api_key")
|
|
|
if not api_key:
|
|
|
raise ToolProviderCredentialValidationError("OpenAI API key is missing")
|
|
|
|
|
|
+ # Get OpenAI base URL
|
|
|
+ openai_base_url = self.runtime.credentials.get("openai_base_url", None)
|
|
|
+ openai_base_url = str(URL(openai_base_url) / "v1") if openai_base_url else None
|
|
|
+
|
|
|
# Initialize OpenAI client
|
|
|
- client = openai.OpenAI(api_key=api_key)
|
|
|
+ client = openai.OpenAI(
|
|
|
+ api_key=api_key,
|
|
|
+ base_url=openai_base_url,
|
|
|
+ )
|
|
|
|
|
|
# Create a thread pool
|
|
|
max_workers = 5
|