Uporaba vector store pri klicu client.responses.create(…)

  • Namen: med klicem client.responses.create(…) uporabimo vektorsko skladišče kot vir konteksta, da so odgovori natančnejši in bolj relevantni glede na zastavljeno vprašanje.

  • Kako poteka postopek: najprej pošljemo prompt v vector store in pridobimo top-k relevantnih dokumentov; ti dokumenti se oblikujejo v učinek konteksta, ki ga vključimo v zahtevo za odgovor.

  • Prednosti: zmanjšamo možnost neustreznih ali neizpolnjujočih odgovorov, izboljšamo doslednost ter omogočimo ažurno in ciljno usmerjeno odgovarjanje.

  • Omejitve in etika: zagotavljanje zasebnosti, pravilna uporaba avtorskih pravic ter preverjanje zanesljivosti virov; poskrbimo za ustrezno filtriranje občutljivih podatkov.

response = client.responses.create(
    model="gpt-5-nano",
    conversation=CONVERSATION_ID,
    input=input_messages,
    tools=[
       {
           "type": "file_search",
           "vector_store_ids": ["vs_68fa2c8d7eb08191bd360f955ecd1de5"],
       }
    ],
)

Spodaj najdete celoten program…

import os
import json
from openai import OpenAI

client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# 🧠 Navodila asistenta
AI_AGENT_INSTRUCTIONS = """
Ti si AI pomočnik učitelju tehnike in tehnologije v osnovni šoli.
Tvoja naloga je pomagati pri pripravi učnih ur, pri iskanju idej za učne dejavnosti,
ter pri oblikovanju preprostih razlag za učence. 
"""

# 🔁 Če želiš nadaljevati obstoječi pogovor, sem vnesi npr. "conv_abc123..."
CONVERSATION_ID = ""
CONVERSATIONS_FILE = "conversations.json"


def load_conversations():
    """Naloži pogovore iz datoteke, če obstaja."""
    if os.path.exists(CONVERSATIONS_FILE):
        with open(CONVERSATIONS_FILE, "r", encoding="utf-8") as f:
            return json.load(f)
    return {}


def save_conversations(conversations):
    """Shrani pogovore v datoteko."""
    with open(CONVERSATIONS_FILE, "w", encoding="utf-8") as f:
        json.dump(conversations, f, indent=4, ensure_ascii=False)


def get_conversation(conversations):
    """Preveri, ali obstaja pogovor, sicer ustvari novega."""
    global CONVERSATION_ID
    if not CONVERSATION_ID or CONVERSATION_ID not in conversations:
        conv = client.conversations.create()
        CONVERSATION_ID = conv.id
        print(f"[Ustvarjen nov ID pogovora]: {CONVERSATION_ID}")
        conversations[CONVERSATION_ID] = {"messages": []}
        save_conversations(conversations)
    else:
        print(f"[Nadaljujem pogovor]: {CONVERSATION_ID}")
    return conversations[CONVERSATION_ID]


def start_chat():
    conversations = load_conversations()
    conversation = get_conversation(conversations)

    print("\nZačni pogovor (vpiši 'exit' za izhod)\n")

    # Naloži prejšnje pogovore
    if conversation["messages"]:
        print("📜 Prejšnji pogovori:")
        for msg in conversation["messages"]:
            print(f"👤 {msg['question']}")
            print(f"🧠  {msg['response']}\n")

    this_is_first_message = True
    while True:
        user_input = input("👤 Ti: ").strip()
        if user_input.lower() in ["exit", "quit"]:
            print("🔚 Pogovor zaključen.")
            break
        
        if this_is_first_message :
            # send system message only once at the beginning of the conversation
            system_message = {"role": "system", "content": AI_AGENT_INSTRUCTIONS}
            this_is_first_message=False
        else:
            system_message = None

        input_messages = []
        if system_message:
            input_messages.append(system_message)
        input_messages.append({"role": "user", "content": user_input})  

        response = client.responses.create(
            model="gpt-5-nano",
            conversation=CONVERSATION_ID,
            input=input_messages,
            tools=[
               {
                   "type": "file_search",
                   "vector_store_ids": ["vs_68fa2c8d7eb08191bd360f955ecd1de5"],
               }
            ],
        )

        answer = response.output_text
        print(f"🧠 Asistent: {answer}\n")

        # Shrani vprašanje in odgovor v datoteko
        conversation["messages"].append({
            "question": user_input,
            "response": answer
        })
        conversations[CONVERSATION_ID] = conversation
        save_conversations(conversations)


if __name__ == "__main__":
    start_chat()