MENU

Knowledge Oasisは主にAIとAWSの知識を共有するブログです。その他ITに関する知識やまれに生活に役立つ知識も共有するかもしれません。

KOふみ
名前はKOふみ(こふみ)。独立系SIerで20年のキャリアを持ち、新人研修の講師から請負開発まで幅広く経験。現在はAIを駆使したソリューション開発に従事。資格は応用情報技術者、データベーススペシャリスト、プロジェクトマネージャー、PMP、簿記2級。AWS学習中で、将来はAWSアンバサダーを目指す。

langsmith.utils.LangSmithError: Failed to POST /examples in LangSmith API. HTTPError(‘422 Client Error: unknown for url: https://api.smith.langchain.com/examples’の対処法

langsmith.utils.LangSmithError: Failed to POST /examples in LangSmith API. HTTPError('422 Client Error: unknown for url: https://api.smith.langchain.com/examples'の対処法
  • URLをコピーしました!

LangChainとLangGraphによるRAG・AIエージェント[実践]入門』の『7.4 Ragasによる合成テストデータの生成』でハマりました。単純なミスだったのですが、エラーメッセージに惑わされて、解決に時間がかかりました。

目次

発生したエラー

以下のコードを実行した際にエラーが発生しました。testsetを作成する処理は省略しています。

# 合成テストデータの保存
inputs = []
outputs = []
metadatas = []

for testset_record in testset.test_data:
    inputs.append(
        {
            "question": testset_record.question,
        }
    )
    outputs.append(
        {
            "contexts": testset_record.contexts,
            "ground_truth": testset_record.ground_truth,
        }
    )
    metadatas.append(
        {
            "source": testset_record.metadata[0]["source"],
            "evolution_type": testset_record.evolution_type,
        }
    )

# Langsmithに登録
client.create_example(
    inputs=inputs,
    outputs=outputs,
    metadata=metadatas,
    dataset_id=dataset.id,
)

発生したエラーは以下の通りです。

langsmith.utils.LangSmithError: Failed to POST /examples in LangSmith API. HTTPError(‘422 Client Error: unknown for url: https://api.smith.langchain.com/examples’, ‘{“detail”:”[\‘inputs\’, \’anyOf\’]: [{\”question\”:\”What steps are required for API key setup to use Anthropic models?\”},{\”question\”:\”What functionalities does EverNote provide for archiving and creating notes?\”},{\”question\”:\”What are the first two steps for accessing the Writer LLM wrapper?\”},{\”question\”:\”How do LLMs differ from chat models in text generation?\”}] is not valid under any of the schemas listed in the \’anyOf\’ keyword”}’)

エラー原因

HTTPの422エラーが発生しているので渡しているデータが悪いと思い調べていました。エラーメッセージにもinputsが表示さており、どのスキーマにも当てはまらないと書いてあります。

しかし、inputsを設定しているコードを何度見返しても間違ってはおらず、公式サイトに載っている記述にしても解消しませんでした。

間違っていたのはデータの作り方ではなくLangSmithにExampleを登録するコードでした。このコードでは複数件のExampleを登録する必要があるので create_examples を実行する必要があるところを create_example を実行していました……。

create_example だと1件ずつ登録なので配列は受け付けません。そのため、「not valid under any of the schemas」とメッセージが表示されていたのでした。

まとめ

今回のようなケアレスミスで動かないときはなかなかミスに気づけません。そんな時には一度離れてみると間違いに気付きやすいです。今回も固定値入れて動かしてみようと公式のコードをコピーした時に「あれ、複数形になってるぞ? もしや……」と間違いに気付くことができました。

LangChainとLangGraphによるRAG・AIエージェント[実践]入門』は写経で簡単に動かせるのでとても良いです。ただ読むだけなのと自分で一回動かしてみるのとでは天と地ほどの差があると思っています。ぜひ、皆さんも自分の手で書いて動かしながら学習進めましょう。

  • URLをコピーしました!

コメント

コメントする

目次