You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
langchain/templates/plate-chain/plate_chain/utils.py

32 lines
947 B
Python

import json
from langchain_core.pydantic_v1 import BaseModel, Field, conint
class LLMPlateResponse(BaseModel):
row_start: conint(ge=0) = Field(
..., description="The starting row of the plate (0-indexed)"
)
row_end: conint(ge=0) = Field(
..., description="The ending row of the plate (0-indexed)"
)
col_start: conint(ge=0) = Field(
..., description="The starting column of the plate (0-indexed)"
)
col_end: conint(ge=0) = Field(
..., description="The ending column of the plate (0-indexed)"
)
contents: str
def parse_llm_output(result: str):
"""
Based on the prompt we expect the result to be a string that looks like:
'[{"row_start": 12, "row_end": 19, "col_start": 1, \
"col_end": 12, "contents": "Entity ID"}]'
We'll load that JSON and turn it into a Pydantic model
"""
return [LLMPlateResponse(**plate_r) for plate_r in json.loads(result)]