Spaces:
Sleeping
Sleeping
| from typing import List, Optional, Literal | |
| from langchain_core.pydantic_v1 import BaseModel, Field | |
| Language = Literal["ja", "en"] | |
| Tone = Literal["formal", "friendly", "excited", "neutral"] | |
| EventType = Literal["product_update", "earnings_summary"] | |
| class CompanyInfo(BaseModel): | |
| company_name: str = Field(..., description="会社名") | |
| brand_voice: Optional[str] = Field(None, description="ブランドボイス(例:信頼性、革新性など)") | |
| region: Optional[str] = Field(None, description="主な地域/市場(例:JP, US, APAC など)") | |
| language: Language = Field("ja", description="出力言語: ja or en") | |
| class Quote(BaseModel): | |
| speaker: str = Field(..., description="話者名") | |
| role: Optional[str] = Field(None, description="役職/肩書") | |
| quote: str = Field(..., description="引用文") | |
| class KPI(BaseModel): | |
| name: str = Field(..., description="指標名(売上高、ARR等)") | |
| value: str = Field(..., description="値(例:12.3億円、+42% YoY)") | |
| period: Optional[str] = Field(None, description="対象期間(FY2025Q2等)") | |
| delta: Optional[str] = Field(None, description="変化率/差分(例:+12% QoQ)") | |
| class SeedInput(BaseModel): | |
| event_type: EventType = Field(..., description="product_update または earnings_summary") | |
| announce_date: Optional[str] = Field(None, description="発表日(任意、YYYY-MM-DD等)") | |
| source_text: str = Field(..., description="元ネタ本文(製品更新や決算要旨)") | |
| goals: List[str] = Field(default_factory=list, description="広報/IRの目的(KGI/KPI含む)") | |
| tone: Tone = Field("formal", description="トーン") | |
| company: CompanyInfo = Field(..., description="会社情報") | |
| include_esg: bool = Field(True, description="ESGテンプレを出力するか") | |
| include_ir: bool = Field(True, description="IRテンプレを出力するか") | |
| class LPSection(BaseModel): | |
| hero: str = Field(..., description="ヒーロー見出し+導入文") | |
| features: List[str] = Field(default_factory=list, description="主な特徴・利点の箇条書き") | |
| cta_text: Optional[str] = Field(None, description="CTA文言") | |
| class ESGBlock(BaseModel): | |
| environment: List[str] = Field(default_factory=list, description="E: 環境に関する施策") | |
| social: List[str] = Field(default_factory=list, description="S: 社会に関する施策") | |
| governance: List[str] = Field(default_factory=list, description="G: ガバナンスに関する施策") | |
| class IRBlock(BaseModel): | |
| highlights: List[str] = Field(default_factory=list, description="四半期・通期のハイライト") | |
| financials: List[KPI] = Field(default_factory=list, description="主要KPI(売上・利益・ユーザー数等)") | |
| guidance: List[str] = Field(default_factory=list, description="見通し・ガイダンス(任意)") | |
| cautionary: Optional[str] = Field(None, description="将来見通しに関する注意事項") | |
| class NarrativeData(BaseModel): | |
| # Press Release | |
| press_headline: str = Field(..., description="プレスリリースの見出し") | |
| press_subhead: Optional[str] = Field(None, description="サブヘッド") | |
| press_body_points: List[str] = Field(default_factory=list, description="本文要点(段落の素)") | |
| quotes: List[Quote] = Field(default_factory=list, description="引用(経営陣・顧客等)") | |
| # LP | |
| lp: LPSection = Field(..., description="LPセクション(ヒーロー/特徴/CTA)") | |
| # SNS | |
| sns_thread: List[str] = Field(default_factory=list, description="SNSスレッドの各ポスト(140-280文字程度)") | |
| # Media Pitch | |
| media_pitch_subject: str = Field(..., description="メディア向けピッチの件名") | |
| media_pitch_body: str = Field(..., description="メディア向けピッチ本文(メール想定)") | |
| # ESG | |
| esg: Optional[ESGBlock] = Field(None, description="ESGテンプレ(任意)") | |
| # IR | |
| ir: Optional[IRBlock] = Field(None, description="IRテンプレ(任意)") | |