File size: 1,752 Bytes
3e6b9d2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"""PydanticAI agents for finance questions."""

from pydantic import BaseModel, Field
from pydantic_ai import Agent, ModelSettings

from pydanticai_app.models import finance_model
from pydanticai_app.config import settings


class FinanceAnswer(BaseModel):
    """Response model for finance questions."""
    answer: str = Field(description="The answer to the finance question in French")
    confidence: float = Field(description="Confidence level between 0 and 1", ge=0.0, le=1.0)
    key_terms: list[str] = Field(description="List of key financial terms mentioned in the answer")


# Model settings for reasoning models
# Qwen3 uses <think> tags which consume 40-60% of tokens
# Increase max_tokens to allow complete responses
agent_model_settings = ModelSettings(
    max_output_tokens=settings.max_tokens,
)

# Create agent for French finance questions
# Note: output_type will be specified at runtime in the endpoint
# Note: max_tokens is set via model_settings for reasoning models (<think> tags)
finance_agent = Agent(
    finance_model,
    model_settings=agent_model_settings,
    system_prompt=(
        "Vous êtes un assistant financier expert spécialisé dans la terminologie "
        "financière française. Répondez TOUJOURS en français, de manière claire, "
        "précise et concise. Fournissez des explications complètes mais sans "
        "développements excessifs.\n\n"
        "Pour chaque réponse, identifiez les termes clés financiers mentionnés "
        "et estimez votre niveau de confiance dans la réponse (entre 0 et 1).\n\n"
        "Note: Vous avez suffisamment de tokens (max_tokens={}) pour fournir des réponses complètes "
        "incluant votre raisonnement.".format(settings.max_tokens)
    ),
)