tweak(rnd): Hide non required field on Blocks (#7977)

Add prompt_values for LLM block, and make it non-advanced.
Make all-field, advanced by default.
cleanup .env.example and .env.template
This commit is contained in:
Zamil Majdy
2024-09-04 17:00:14 -05:00
committed by GitHub
parent b4b5a09b6b
commit 54694709bb
5 changed files with 71 additions and 30 deletions

View File

@@ -4,5 +4,49 @@ DB_NAME=agpt_local
DB_PORT=5432
DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:${DB_PORT}/${DB_NAME}"
PRISMA_SCHEMA="postgres/schema.prisma"
ENABLE_AUTH="false"
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=password
AUTH_ENABLED=false
APP_ENV="local"
SENTRY_DSN=
## ===== OPTIONAL API KEYS ===== ##
# LLM
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GROQ_API_KEY=
# Reddit
REDDIT_CLIENT_ID=
REDDIT_CLIENT_SECRET=
REDDIT_USERNAME=
REDDIT_PASSWORD=
# Discord
DISCORD_BOT_TOKEN=
# SMTP/Email
SMTP_SERVER=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
# D-ID
DID_API_KEY=
# Open Weather Map
OPENWEATHERMAP_API_KEY=
# SMTP
SMTP_SERVER=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
# Medium
MEDIUM_API_KEY=
MEDIUM_AUTHOR_ID=

View File

@@ -1,22 +0,0 @@
# LLM
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
GROQ_API_KEY=
# Reddit
REDDIT_CLIENT_ID=
REDDIT_CLIENT_SECRET=
REDDIT_USERNAME=
REDDIT_PASSWORD=
# Discord
DISCORD_BOT_TOKEN=
# SMTP/Email
SMTP_SERVER=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
# D-ID
DID_API_KEY=

View File

@@ -84,6 +84,9 @@ class AIStructuredResponseGeneratorBlock(Block):
api_key: BlockSecret = SecretField(value="")
sys_prompt: str = ""
retry: int = 3
prompt_values: dict[str, str] = SchemaField(
advanced=False, default={}, description="Values used to fill in the prompt."
)
class Output(BlockSchema):
response: dict[str, str]
@@ -167,6 +170,11 @@ class AIStructuredResponseGeneratorBlock(Block):
lines = s.strip().split("\n")
return "\n".join([line.strip().lstrip("|") for line in lines])
values = input_data.prompt_values
if values:
input_data.prompt = input_data.prompt.format(**values)
input_data.sys_prompt = input_data.sys_prompt.format(**values)
if input_data.sys_prompt:
prompt.append({"role": "system", "content": input_data.sys_prompt})
@@ -252,6 +260,9 @@ class AITextGeneratorBlock(Block):
api_key: BlockSecret = SecretField(value="")
sys_prompt: str = ""
retry: int = 3
prompt_values: dict[str, str] = SchemaField(
advanced=False, default={}, description="Values used to fill in the prompt."
)
class Output(BlockSchema):
response: str

View File

@@ -59,6 +59,12 @@ class BlockSchema(BaseModel):
return obj
cls.cached_jsonschema = cast(dict[str, Any], ref_to_dict(model))
# Set default properties values
for field in cls.cached_jsonschema.get("properties", {}).values():
if isinstance(field, dict) and "advanced" not in field:
field["advanced"] = True
return cls.cached_jsonschema
@classmethod

View File

@@ -114,13 +114,15 @@ def SchemaField(
exclude: bool = False,
**kwargs,
) -> T:
json_extra: dict[str, Any] = {}
if placeholder:
json_extra["placeholder"] = placeholder
if secret:
json_extra["secret"] = True
if advanced:
json_extra["advanced"] = True
json_extra = {
k: v
for k, v in {
"placeholder": placeholder,
"secret": secret,
"advanced": advanced,
}.items()
if v is not None
}
return Field(
default,