python - 如何创建内存存储以用作 OpenAI-ChatGPT Python 脚本的上下文信息?

标签 python openai-api chatgpt-api

我想制作一个智能助手,能够存储我与之进行的所有历史对话。

我的想法是能够进行长时间的讨论,随着时间的推移,当我扩展一些我想要研究的主题时,这些讨论可以被存储和检索。

我有一个包含以下文件的目录: Files containing historical and important information.

这是我用来在将内存输入模型之前反复将内存放置在提示开头的代码:

import openai 
import os


from PIL import Image
import requests
import os



openAIKey='APIKEY'

prompt="\n Hi Duncan. You don't seem to be talking. Can you try saying something else?"

def talk(prompt,n=1,flex=0.5,flex_type='temp',memory=False,record_memory=False,memory_address=r'G:\My Drive\0- Personal\07- Duncan\memory',verbose=True):
        
        
    openai.api_key=openAIKey
    
    model_engine = "text-davinci-003"
    
    # Retrieve memory
    os.chdir(memory_address)
    
    memory_txt=''
    if memory:
        filelist = os.listdir()
        for filename in filelist:
            with open(filename) as f:
                file = open(filename, "r", encoding='utf-8')
                contents = file.read()
                memory_txt += contents
    '''           
    elif os.path.isfile(os.path.join(memory_address, 'memory.txt')):
        with open(os.path.join(memory_address, 'memory.txt')) as f:
            memory_txt = f.read()
    '''
    
    if memory:
        prompt = memory_txt + prompt

            
    if flex_type=='temp': 
        completion = openai.Completion.create(
            engine=model_engine,
            prompt=prompt,
            max_tokens=1012,
            n=n,
            stop=None,
            temperature=flex)
    elif flex_type=='top_n':
        print('top_n Pending...')
            
    response_array=[]
    for i in range(n):
        response = completion.choices[i].text
        response_array.append(response)
        
        if verbose==True:
            print()
            print(response, end='\n----------------------------------------------------------------')
        
        if record_memory:
            with open(os.path.join(memory_address, 'memory.txt'), 'a') as f:
                f.write(response + '\n')
        
    
    
    return response_array

if __name__=='__main__':
    
    
    memory=True
    record_memory=True
    flex_type='temp'
    n=1
    flex=0.5
    verbose=True
    memory_address=r'G:\My Drive\0- Personal\07- Duncan\memory'
    prompt='Welcome Duncan. I am so happy to meet you. \nHi Duncan! I am testing your talking function. What memories can you read?'
    
    ra=talk(prompt=prompt,n=n,flex=flex,flex_type=flex_type,memory=memory,memory_address=memory_address,verbose=verbose)

但是它似乎 react 不是很灵敏,并且在一些交互之后它停止给出任何答案。

知道如何改进吗?

最佳答案

我相信openai.ChatCompletion.create就是您正在寻找的:ChatCompletion introduction

关于python - 如何创建内存存储以用作 OpenAI-ChatGPT Python 脚本的上下文信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76195150/

相关文章:

javascript - 如何检索 OpenAI 图像并将其保存到 S3 存储桶

python - OpenAI API : How do I handle errors in Python?

python - Python 中的 ChatGPT 包装器作为命令行解释器

python - Pygame 显示更新故障?

python - 新手问题 -- 元组列表 -> 列表(带有 workalendar)

python - 如何在 2 列上训练 ML 模型来解决分类问题?

delphi - 如何通过 Delphi 使用 ChatGPT 进行流式传输?

python - openai python 似乎只从 openai.Image.create_edit 生成相同的图像

python - Python 3 中函数和 lambda 之间的差异以及何时使用which

python - 我需要一些帮助来修复一个 python 脚本,该脚本为 chatgpt 提供人形语音,并允许我使用自己的声音与它交谈