Ga naar inhoud

OpenAI

introduceren

Logfire ondersteunt het gebruik van een extra regel code om oproepen naar OpenAI te detecteren.

import openai
import logfire

client = openai.Client()

logfire.configure()
logfire.instrument_openai(client)  # (1)!

response = client.chat.completions.create(
    model='gpt-4',
    messages=[
        {'role': 'system', 'content': 'You are a helpful assistant.'},
        {'role': 'user', 'content': 'Please write me a limerick about Python logging.'},
    ],
)
print(response.choices[0].message)
  1. Als u geen toegang heeft tot de client-side instantie, kunt u een klasse (bijv.logfire.instrument_openai(openai.Client)) doorgeven of geen argumenten (bijv.logfire.instrument_openai()) doorgeven om de klassen openai。客户端 en openai。AsyncClient te detecteren.

_
Voor meer informatie, zie [instrument_openai() API Reference] [logfire. logfire. instrument _ openai]. _

Hiermee kunt u verkrijgen:

  • De overspanning rond de oproep naar OpenAI, die de duur registreert en eventuele uitzonderingen opvangt

  • Menselijk leesbare weergave van gesprekken met agenten

  • Details van de reactie, inclusief het aantal gebruikte tokens

Logvuur OpenAI
OpenAI overspanningen en gesprekken
Logfire OpenAI Argumenten
Span argumenten inclusief antwoorddetails

Behandelde methoden

De volgende OpenAI methodes komen aan bod:

Alle methoden zijn opgenomen in openai 中。客户端 en openai。AsyncClient.

Hier is bijvoorbeeld de detectie van de oproep voor het genereren van afbeeldingen:

import openai
import logfire

async def main():
    client = openai.AsyncClient()
    logfire.configure()
    logfire.instrument_openai(client)

    response = await client.images.generate(
        prompt='Image of R2D2 running through a desert in the style of cyberpunk.',
        model='dall-e-3',
    )
    url = response.data[0].url
    import webbrowser
    webbrowser.open(url)

if __name__ == '__main__':
    import asyncio
    asyncio.run(main())

Geef:

Logfire OpenAI Beeldgeneratie
OpenAI beeldgeneratie span

OpenAI beeldgeneratie span

streaming reactie

Bij het detecteren van een streamingreactie creëert Logfire twee overspanningen: één rond het eerste verzoek en één rond het streamingantwoord.

Hier gebruiken we ook Rich 's Live en Markdown types om de respons in realtime in het eindpunt weer te geven.: Danser:

import openai
import logfire
from rich.console import Console
from rich.live import Live
from rich.markdown import Markdown

client = openai.AsyncClient()
logfire.configure()
logfire.instrument_openai(client)

async def main():
    console = Console()
    with logfire.span('Asking OpenAI to write some code'):
        response = await client.chat.completions.create(
            model='gpt-4',
            messages=[
                {'role': 'system', 'content': 'Reply in markdown one.'},
                {'role': 'user', 'content': 'Write Python to show a tree of files 🤞.'},
            ],
            stream=True
        )
        content = ''
        with Live('', refresh_per_second=15, console=console) as live:
            async for chunk in response:
                if chunk.choices[0].delta.content is not None:
                    content += chunk.choices[0].delta.content
                    live.update(Markdown(content))

if __name__ == '__main__':
    import asyncio
    asyncio.run(main())

In Logfire ziet het er zo uit:

OpenAI Streaming voor Logfire
OpenAI streaming reactie

本文总阅读量次