Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Model predict input format changed in v0.50.15 #2255

Open
naingthet opened this issue Aug 28, 2024 · 4 comments
Open

Model predict input format changed in v0.50.15 #2255

naingthet opened this issue Aug 28, 2024 · 4 comments

Comments

@naingthet
Copy link

I had code in weave v0.50.14 that successfully passed data into models through the Evaluation class. These objects are passed into the model predict method as dict-like objects, allowing usage like so:

model = FindingsSearchModel(...)
evaluation = weave.Evaluation(
    name=f"{finding_type}-evaluation", dataset=payloads, scorers=[LLMJudge(...)]
)
results = await evaluation.evaluate(model)

Where model looks like:

class Model(weave.Model):
    @weave.op()
    def predict(self, query: dict[str, Any]) -> QueryResult:
        arg1 = query["arg1"] # This works in v0.50.14
        ...

However, in v0.50.15, this code no longer works and I receive an error message indicating that the query is now of type BoxedStr. I'm not sure how to handle this since it does not appear to be a dict-like or object-like type. Any help would be greatly appreciated.

@jamie-rasmussen
Copy link
Collaborator

Thank you for reporting this, we're investigating this regression. Downgrading to v0.50.14 would be the best short term workaround.

@tssweeney
Copy link
Collaborator

@naingthet can yu share the shape of payloads?

@naingthet
Copy link
Author

@naingthet can yu share the shape of payloads?

Thanks for investigating. Loving weave so far and excited to see where it goes!

payloads is of type list[dict[str, Any]].

@andrewtruong
Copy link
Collaborator

Hey @naingthet, does this repro in 0.51.0?. If yes, can you help me repro this? I've tried a few cases but can't seem to get the behaviour you're seeing. Here's a minimal example that seems to work fine:

from typing import Any
import weave

class Model(weave.Model):
    @weave.op()
    def predict(self, query: dict[str, Any]):
        arg1 = query["arg1"]
        return arg1 + 1

m = Model()
   
payloads = [
    {"query": {"arg1": 1}},
    {"query": {"arg1": 2}},
    {"query": {"arg1": 3}},
    {"query": {"arg1": 4}},
    {"query": {"arg1": 5}},
]

    
evaluation = weave.Evaluation(name=f"evaluation", dataset=payloads)
res = await evaluation.evaluate(m)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants