Bruke OpenAI og Python for databehandling

Jul 8, 2024

Forelesningsnotater: Bruke OpenAI og Python for å hente svar fra flere filer

Introduksjon

  • Mål: Vise hvordan man kan hente svar fra flere filer ved bruk av OpenAI, ticktoken og Python.
  • Én spørsmålssvar kan komme fra hvilken som helst inndatafil.

Nødvendige pakker

  • import pandas as pd
  • import numpy as np
  • import os
  • import ticktoken
  • import openai
  • Sett OpenAI API-nøkkel: openai.api_key = konfigurasjon
  • Sett koding: tiktoken.get_encoding('cl100k_base')

Konstruering av DataFrame

  • Opprett en DataFrame med kolonnene: filnavn, innhold, tokens
  • Les filer fra katalog:
    • listdir(katalog_navn) for å liste filer
    • Åpne og les tekstfiler (.txt)
    • Tell tokens: encoding.encode(' '.join(innhold))
    • Legg til data i DataFrame: df.append({'filnavn': filnavn, 'innhold': innhold, 'tokens': len(tokens)}, ignore_index=True)

Eksempel på databehandling

  • Katalog: Data_store
  • Bekreft DataFrame-konstruksjon: print(df)

Funksjon for embeddings

  • Definer funksjon for embeddings:
    • Modell: 'embedding-ada-002'
    • Bruk OpenAI API for å få embeddings: openai.Embedding.create(model=model, input=tekst)
    • Returner embedding: result['data'][0]['embedding']

Beregning av dokumentembeddings

  • Funksjon for å iterere gjennom DataFrame-rader og beregne embeddings for innholdskolonnen
  • Aggregere embeddings til en ordbok: {row['filnavn']: get_embedding(row['innhold']) for index, row in df.iterrows()}

Sammenligne dokumenter

  • Definer funksjon for å sammenligne dokumentseksjoner etter spørsmålslignelse
  • Beregn spørsmåls embedding: get_embedding(user_query)
  • Beregn likheter ved å bruke prikkprodukt:
    • np.dot(query_embedding, np.array(doc_embedding))
    • Lagre og omvendt sorter likheter
  • Returner likheter

Spørsmålsprosessering

  • Definer brukerforespørsel: user_query = 'How poverty is the reason for homelessness?'
  • Beregn dokumentembeddings og få toppresultater
  • Skriv ut sorterte resultater

GPT-3.5 Turbo-oppsett

  • Definer system- og brukerroller:
    • System: {'rolle': 'system', 'innhold': 'Du er en professor som gir presise svar.'}
    • Bruker: {'rolle': 'bruker', 'innhold': brukertekst}
  • Bruk OpenAI Chat Completion:
    • respons = openai.ChatCompletion.create(model='gpt-3.5-turbo', messages=meldinger)
    • Ekstraher og skriv ut svar

Viktige betraktninger

  • For store filer, del innholdet i mindre biter
  • For kontinuerlige samtaler, bruk en løkke for å holde ved å legge til meldinger

Konklusjon

  • Demonstrerte metode for å hente kontekstspesifikke svar ved bruk av OpenAI og Python
  • Ytterligere betraktninger for større implementeringer

Sluttnote

  • Oppfordre til tilbakemelding og abonnement på kanalen