Source code for langtree.models.openai.openai_adapter

from langtree.core import Operator
from langtree.core.utils import get_embedding_content
import openai

[docs]def get_chat_content(output): return output["choices"][0]["message"]
[docs]class OpenAIChatCompletion(Operator): def __init__(self, call=None, parse=None, **kwargs): super().__init__( call=openai.ChatCompletion.create if call is None else call, parse=get_chat_content if parse is None else parse ) self.freeze_call(**kwargs)
[docs]class OpenAICompletion(Operator): def __init__(self, call=None, parse=None, **kwargs): super().__init__( call=openai.Completion.create if call is None else call, parse=None ) self.freeze_call(**kwargs)
[docs]def make_open_ai_embedding_call(func): def embfn(docs, model=None): return [func(input=d, model=model)["data"][0]["embedding"] for d in docs] return embfn
[docs]class OpenAIEmbedding(Operator): def __init__(self, call=None, **kwargs): super().__init__( call=make_open_ai_embedding_call(openai.Embedding.create) if call is None else call, parse=get_embedding_content ) self.freeze_call(**kwargs)