fix: resolve CI linting and type errors
This commit is contained in:
@@ -1,11 +1,13 @@
|
|||||||
|
"""Run command for executing prompts."""
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from typing import Any, Dict
|
||||||
import click
|
import click
|
||||||
from pathlib import Path
|
|
||||||
from promptforge.core.prompt import Prompt
|
from promptforge.core.prompt import Prompt
|
||||||
from promptforge.core.template import TemplateEngine
|
from promptforge.core.template import TemplateEngine
|
||||||
from promptforge.core.config import get_config
|
from promptforge.core.config import get_config
|
||||||
from promptforge.providers import ProviderFactory
|
from promptforge.providers import ProviderFactory
|
||||||
from promptforge.testing.validator import Validator
|
|
||||||
|
|
||||||
|
|
||||||
@click.command()
|
@click.command()
|
||||||
@@ -33,7 +35,11 @@ def run(ctx, name: str, provider: str, var: tuple, output: str, stream: bool):
|
|||||||
|
|
||||||
template_engine = TemplateEngine()
|
template_engine = TemplateEngine()
|
||||||
try:
|
try:
|
||||||
rendered = template_engine.render(prompt.content, variables, prompt.variables)
|
rendered = template_engine.render(
|
||||||
|
prompt.content,
|
||||||
|
variables,
|
||||||
|
prompt.variables,
|
||||||
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
click.echo(f"Template error: {e}", err=True)
|
click.echo(f"Template error: {e}", err=True)
|
||||||
raise click.Abort()
|
raise click.Abort()
|
||||||
@@ -42,10 +48,11 @@ def run(ctx, name: str, provider: str, var: tuple, output: str, stream: bool):
|
|||||||
selected_provider = provider or prompt.provider or config.defaults.provider
|
selected_provider = provider or prompt.provider or config.defaults.provider
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
provider_config: Dict[str, Any] = dict(config.providers.get(selected_provider, {}))
|
||||||
provider_instance = ProviderFactory.create(
|
provider_instance = ProviderFactory.create(
|
||||||
selected_provider,
|
selected_provider,
|
||||||
model=config.providers.get(selected_provider, {}).model if selected_provider in config.providers else None,
|
model=provider_config.get("model") if isinstance(provider_config, dict) else None,
|
||||||
temperature=config.providers.get(selected_provider, {}).temperature if selected_provider in config.providers else 0.7,
|
temperature=provider_config.get("temperature", 0.7) if isinstance(provider_config, dict) else 0.7,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
click.echo(f"Provider error: {e}", err=True)
|
click.echo(f"Provider error: {e}", err=True)
|
||||||
@@ -67,18 +74,26 @@ def run(ctx, name: str, provider: str, var: tuple, output: str, stream: bool):
|
|||||||
import json
|
import json
|
||||||
click.echo("\n" + json.dumps({"response": response}, indent=2))
|
click.echo("\n" + json.dumps({"response": response}, indent=2))
|
||||||
|
|
||||||
|
if prompt.validation_rules:
|
||||||
|
validate_response(prompt, response)
|
||||||
|
|
||||||
|
try:
|
||||||
asyncio.run(execute())
|
asyncio.run(execute())
|
||||||
|
except Exception as e:
|
||||||
|
click.echo(f"Execution error: {e}", err=True)
|
||||||
|
raise click.Abort()
|
||||||
|
|
||||||
|
|
||||||
def validate_response(prompt: Prompt, response: str):
|
def validate_response(prompt: Prompt, response: str):
|
||||||
|
"""Validate response against rules."""
|
||||||
for rule in prompt.validation_rules:
|
for rule in prompt.validation_rules:
|
||||||
if rule.type == "regex":
|
if rule.type == "regex":
|
||||||
import re
|
import re
|
||||||
if not re.search(rule.pattern or "", response):
|
if not re.search(rule.pattern or "", response):
|
||||||
click.echo(f"Warning: Response failed regex validation", err=True)
|
click.echo("Warning: Response failed regex validation", err=True)
|
||||||
elif rule.type == "json":
|
elif rule.type == "json":
|
||||||
try:
|
try:
|
||||||
import json
|
import json
|
||||||
json.loads(response)
|
json.loads(response)
|
||||||
except json.JSONDecodeError:
|
except json.JSONDecodeError:
|
||||||
click.echo(f"Warning: Response is not valid JSON", err=True)
|
click.echo("Warning: Response is not valid JSON", err=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user