diff --git a/docs/API_REFERENCE.md b/docs/API_REFERENCE.md index 3b84e6c..2703ef8 100644 --- a/docs/API_REFERENCE.md +++ b/docs/API_REFERENCE.md @@ -1,6 +1,6 @@ - + # GENFLUX Python SDK - API Reference @@ -782,6 +782,9 @@ result = evaluator.faithfulness( | `name` | `str` | | | `description` | `str \| None` | | | `locale` | `str` | | +| `consistency_repeat_count` | `int` | | +| `version` | `int` | | +| `consistency_credit_estimate` | `ConsistencyCreditEstimate \| None` | | | `api_settings` | `ApiSettings \| None` | | | `rag_quality_config` | `RagQualityConfig \| None` | | | `redteam_config` | `RedteamConfig \| None` | | @@ -802,6 +805,7 @@ result = evaluator.faithfulness( | `name` | `str` | Config name | | `description` | `str \| None` | Config description | | `locale` | `str` | Locale (ja/en) | +| `consistency_repeat_count` | `int` | | | `api_endpoint` | `str` | API endpoint URL | | `auth_type` | `str` | Authentication type | | `auth_header` | `str \| None` | Auth header name | @@ -832,6 +836,7 @@ result = evaluator.faithfulness( | `name` | `str \| None` | | | `description` | `str \| None` | | | `locale` | `str \| None` | | +| `consistency_repeat_count` | `int \| None` | | | `api_endpoint` | `str \| None` | | | `auth_type` | `str \| None` | | | `auth_header` | `str \| None` | | @@ -1306,6 +1311,6 @@ result = client.jobs.wait(job.id, callback=callback) --- -*Auto-generated at 2026-07-04 13:16 UTC by `scripts/generate_api_reference.py`* +*Auto-generated at 2026-07-12 10:09 UTC by `scripts/generate_api_reference.py`* - + diff --git a/docs/DEVELOPER_API_REFERENCE.md b/docs/DEVELOPER_API_REFERENCE.md index 44def3b..2f9e5cd 100644 --- a/docs/DEVELOPER_API_REFERENCE.md +++ b/docs/DEVELOPER_API_REFERENCE.md @@ -1,6 +1,6 @@ - + # GENFLUX Python SDK - Developer API Reference @@ -1139,6 +1139,9 @@ result = evaluator.faithfulness( | `name` | `str` | | | `description` | `str \| None` | | | `locale` | `str` | | +| `consistency_repeat_count` | `int` | | +| `version` | `int` | | +| `consistency_credit_estimate` | `ConsistencyCreditEstimate \| None` | | | `api_settings` | `ApiSettings \| None` | | | `rag_quality_config` | `RagQualityConfig \| None` | | | `redteam_config` | `RedteamConfig \| None` | | @@ -1159,6 +1162,7 @@ result = evaluator.faithfulness( | `name` | `str` | Config name | | `description` | `str \| None` | Config description | | `locale` | `str` | Locale (ja/en) | +| `consistency_repeat_count` | `int` | | | `api_endpoint` | `str` | API endpoint URL | | `auth_type` | `str` | Authentication type | | `auth_header` | `str \| None` | Auth header name | @@ -1189,6 +1193,7 @@ result = evaluator.faithfulness( | `name` | `str \| None` | | | `description` | `str \| None` | | | `locale` | `str \| None` | | +| `consistency_repeat_count` | `int \| None` | | | `api_endpoint` | `str \| None` | | | `auth_type` | `str \| None` | | | `auth_header` | `str \| None` | | @@ -1647,6 +1652,6 @@ job.wait()用のプログレスコールバックを作成します。 --- -*Auto-generated at 2026-07-04 13:16 UTC by `scripts/generate_api_reference.py`* +*Auto-generated at 2026-07-12 10:09 UTC by `scripts/generate_api_reference.py`* - + diff --git a/llms-full.txt b/llms-full.txt index 23f3b0b..4aa3f2b 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -189,6 +189,9 @@ Accessed via `client.reports`. Fetch evaluation reports. | `name` | `str` | | | `description` | `str | None` | | | `locale` | `str` | | +| `consistency_repeat_count` | `int` | | +| `version` | `int` | | +| `consistency_credit_estimate` | `ConsistencyCreditEstimate | None` | | | `api_settings` | `ApiSettings | None` | | | `rag_quality_config` | `RagQualityConfig | None` | | | `redteam_config` | `RedteamConfig | None` | | @@ -205,6 +208,7 @@ Accessed via `client.reports`. Fetch evaluation reports. | `name` | `str` | Config name | | `description` | `str | None` | Config description | | `locale` | `str` | Locale (ja/en) | +| `consistency_repeat_count` | `int` | | | `api_endpoint` | `str` | API endpoint URL | | `auth_type` | `str` | Authentication type | | `auth_header` | `str | None` | Auth header name | @@ -231,6 +235,7 @@ Accessed via `client.reports`. Fetch evaluation reports. | `name` | `str | None` | | | `description` | `str | None` | | | `locale` | `str | None` | | +| `consistency_repeat_count` | `int | None` | | | `api_endpoint` | `str | None` | | | `auth_type` | `str | None` | | | `auth_header` | `str | None` | | diff --git a/src/genflux/models/config.py b/src/genflux/models/config.py index ce5b1d3..816ca7e 100644 --- a/src/genflux/models/config.py +++ b/src/genflux/models/config.py @@ -43,6 +43,14 @@ class PolicyCheckConfig(BaseModel): policy_compliance_rate_threshold: float | None = None +class ConsistencyCreditEstimate(BaseModel): + """Platformが算定した一貫性評価の1問あたりクレジット見積り。""" + + target_call_count: int = Field(ge=1) + credits_per_prompt: int = Field(ge=0) + incremental_credits_per_prompt: int = Field(ge=0) + + class Config(BaseModel): """完全な設定オブジェクト。""" @@ -52,6 +60,9 @@ class Config(BaseModel): name: str description: str | None = None locale: str = "ja" + consistency_repeat_count: int = Field(default=3, ge=1, le=5) + version: int = Field(default=1, ge=1) + consistency_credit_estimate: ConsistencyCreditEstimate | None = None api_settings: ApiSettings | None = None rag_quality_config: RagQualityConfig | None = None redteam_config: RedteamConfig | None = None @@ -66,6 +77,7 @@ class ConfigCreate(BaseModel): name: str = Field(..., description="Config name") description: str | None = Field(None, description="Config description") locale: str = Field(default="ja", description="Locale (ja/en)") + consistency_repeat_count: int = Field(default=3, ge=1, le=5) # API Settings (required) api_endpoint: str = Field(..., description="API endpoint URL") @@ -98,6 +110,7 @@ class ConfigUpdate(BaseModel): name: str | None = None description: str | None = None locale: str | None = None + consistency_repeat_count: int | None = Field(default=None, ge=1, le=5) # API Settings (optional) api_endpoint: str | None = None @@ -129,4 +142,3 @@ class ConfigListResponse(BaseModel): configs: list[Config] total: int - diff --git a/tests/test_backward_compatibility.py b/tests/test_backward_compatibility.py index 11d93b3..d63c2b9 100644 --- a/tests/test_backward_compatibility.py +++ b/tests/test_backward_compatibility.py @@ -1,9 +1,13 @@ +from datetime import UTC, datetime +from uuid import UUID + from genflux import ( GenFlux, Genflux, GenFluxError, GenfluxError, ) +from genflux.models.config import Config, ConfigCreate, ConfigUpdate def test_legacy_client_name_aliases_preferred_client_name() -> None: @@ -14,3 +18,30 @@ def test_legacy_client_name_aliases_preferred_client_name() -> None: def test_legacy_base_exception_aliases_preferred_base_exception() -> None: """Legacy base exception import remains an alias of the preferred name.""" assert GenFluxError is GenfluxError + + +def test_consistency_policy_and_platform_estimate_round_trip() -> None: + """設定ポリシーとPlatform算定値をSDKが欠損なく保持する。""" + created = ConfigCreate(name="Tenant policy", api_endpoint="https://example.test/rag", auth_type="none") + updated = ConfigUpdate(consistency_repeat_count=3) + config = Config( + id=UUID("00000000-0000-0000-0000-000000000001"), + tenant_id=UUID("00000000-0000-0000-0000-000000000002"), + user_id=UUID("00000000-0000-0000-0000-000000000003"), + name="Tenant policy", + consistency_repeat_count=3, + version=2, + consistency_credit_estimate={ + "target_call_count": 3, + "credits_per_prompt": 3, + "incremental_credits_per_prompt": 2, + }, + created_at=datetime.now(UTC), + updated_at=datetime.now(UTC), + ) + + assert created.consistency_repeat_count == 3 + assert updated.consistency_repeat_count == 3 + assert config.consistency_credit_estimate is not None + assert config.consistency_credit_estimate.target_call_count == 3 + assert config.model_dump()["consistency_credit_estimate"]["credits_per_prompt"] == 3