Wraps base classes to automatically use weave.
Supported base classes: BaseCall
, BaseExtractor
, BaseVectorStore
,
BaseChunker
, BaseEmbedder
Example:
import weave
from mirascope.openai import OpenAICall
from mirascope.wandb import with_weave
weave.init("my-project")
@with_weave
class BookRecommender(OpenAICall):
prompt_template = "Please recommend some {genre} books"
genre: str
recommender = BookRecommender(genre="fantasy")
response = recommender.call() # this will automatically get logged with weave
print(response.content)
Source code in mirascope/wandb/weave.py
| def with_weave(cls):
"""Wraps base classes to automatically use weave.
Supported base classes: `BaseCall`, `BaseExtractor`, `BaseVectorStore`,
`BaseChunker`, `BaseEmbedder`
Example:
```python
import weave
from mirascope.openai import OpenAICall
from mirascope.wandb import with_weave
weave.init("my-project")
@with_weave
class BookRecommender(OpenAICall):
prompt_template = "Please recommend some {genre} books"
genre: str
recommender = BookRecommender(genre="fantasy")
response = recommender.call() # this will automatically get logged with weave
print(response.content)
```
"""
for name in get_class_functions(cls):
setattr(cls, name, weave.op()(getattr(cls, name)))
if hasattr(cls, "_provider") is False or cls._provider != "openai":
if hasattr(cls, "configuration"):
cls.configuration = cls.configuration.model_copy(
update={"llm_ops": [*cls.configuration.llm_ops, "weave"]}
)
return cls
|