OpenAI、Anthropic、テキストへのレンダリング

ContextPackはプロバイダーに依存しません。選択とポリシー評価が完了してからレンダリングすることで、SDKとは独立して同じパックとマニフェストを確認できます。

v0.1系列のロール対応

Cognoxiumのロール

to_openai()

to_anthropic()

to_text()

system

system入力メッセージ

トップレベルのsystemテキストへ追加

[system] ...

developer

developer入力メッセージ

トップレベルのsystemテキストへ追加

[developer] ...

user

user入力メッセージ

userメッセージ

[user] ...

assistant

assistant入力メッセージ

assistantメッセージ

[assistant] ...

tool

[tool result]接頭辞付きのuser

[tool result]接頭辞付きのuser

[tool] ...

v0.1系列では、ツール呼び出しIDとプロバイダー固有のツール結果オブジェクトは保持されません。アプリケーションでこれらのフィールドが必要な場合は、カスタムRendererを使用してください。

生成されるデータ構造を確認する

import cognoxium as cx

pack = cx.CognitionFrame.from_records([
    {"id": "policy", "payload": "Be concise.", "role": "system",
     "sources": ["app://policy"], "trust": "trusted", "retention": "required",
     "created_at": "2026-01-01T00:00:00Z"},
    {"id": "tool", "payload": "42", "role": "tool",
     "sources": ["tool://calculator"], "created_at": "2026-01-01T00:01:00Z"},
]).pack(budget=100)

openai_input = pack.to_openai()
anthropic_input = pack.to_anthropic()
print(openai_input[0]["role"], openai_input[0]["content"][0]["type"])
print(openai_input[1]["role"], openai_input[1]["content"][0]["text"])
print(anthropic_input["system"])
print(anthropic_input["messages"][0]["role"])
system input_text
user [tool result]
42
Be concise.
user

to_openai()は入力メッセージのマッピングからなるリストを返します。to_anthropic()systemmessagesを持つマッピングを返します。プロバイダーSDKは独立して進化するため、本番リクエストを送る前に、これらの構造をアプリケーションで固定しているSDKバージョンと比較してください。

ペイロードの対応

  • Textはテキスト値としてレンダリングされます。

  • JSONは正規化されたコンパクトなJSON文字列としてレンダリングされます。

  • ReferenceはURIとしてレンダリングされます。

  • Binaryはv0.1系列のパックへ入れられません。任意/優先項目は除外され、必須項目ではUnsupportedContentが送出されます。

どのレンダラーもReference URIの内容を取得しません。参照先の解決、認証、認可はホストアプリケーションの責任です。

カスタムレンダラー

pack.render(renderer)を呼び出します。カスタムレンダラーはイミュータブルなパックを受け取り、表現できないペイロードを黙って文字列化せず、UnsupportedContentを送出する必要があります。プラグインの作成を参照してください。