Использование пользовательских данных JSON для контекста в Langchain и ConversationChain() в ChatGPT OpenAI

У меня есть собственный файл JSON, созданный на основе листа Excel, который содержит определенные данные, на которых я хочу, чтобы мои вопросы основывались и на которых мне нужны ответы от OpenAI. Теперь для этого у меня есть следующий фрагмент кода:

      s3 = boto3.client('s3')      # read from S3
obj = s3.get_object(Bucket='bucketname', Key='sample.xlsx')

data = obj['Body'].read()
df = pd.read_excel(io.BytesIO(data), sheet_name='randomsheetname')

df = df.to_dict("records")     # create JSON dataframe from sheetdata

response = openai.ChatCompletion.create(
     model="gpt-4",
     messages=[{
         "role": "system", "content": f"{prompt}. \n\nJSON file: {df}. \n\nAnswer:"
     }],
     temperature=0.5,
     max_tokens=500
)

для чего я могу получить ответ на любой вопрос, основанный на моем входном файле JSON, который я предоставляю openai.ChatCompletion.create()

Теперь, если я хочу отслеживать свои предыдущие разговоры и предоставлять openai контекст для ответа на вопросы, основанные на предыдущих вопросах в той же ветке разговора, мне придется использовать langchain. У меня возникли проблемы с предоставлением набора данных JSON для моих ChatOpenAI() и ConversationChain(), поскольку я работаю с чем-то вроде этого. (НАПИСАНО С ИСПОЛЬЗОВАНИЕМ PYTHON)

      llm = ChatOpenAI(temperature=0.5, openai_api_key=api_key, model="gpt-4")
    conversation = ConversationChain(
        llm=llm, 
        prompt=prompt_template,
        verbose=True, 
        memory=memory,
        chain_type_kwargs=chain_type_kwargs
    )
    response = conversation.predict(input=prompt)
    

пожалуйста помогите.

1 ответ

Я использую следующий подход в langchain.

Простой вариант использования ChatOpenAI в langchain.

      from langchain.chat_models import ChatOpenAI
from langchain.schema import (
    AIMessage,
    HumanMessage,
    SystemMessage
)
llm = ChatOpenAI(temperature=0.9,model_name="gpt-3.5-turbo", max_tokens = 2048)
system_text = "You are helpfull assistant that tells jokes"
human_prompt = "Tell a joke"

output_answer = llm.predict_messages([SystemMessage(content = system_text), HumanMessage(content=human_prompt)])
print(output_answer.content)

Поскольку вам необходимо предоставить документы, вы, вероятно, также можете посмотреть ConversationalRetrievalChain или другие параметры поиска, поскольку они позволяют хранить контекст документа в векторном хранилище, что полезно для оптимизации количества токенов.

      qa = ConversationalRetrievalChain.from_llm(
    ChatOpenAI(temperature=0, model="gpt-4"),
    vectorstore.as_retriever()
)
chat_history = []
query = "What did the president say about Ketanji Brown Jackson"
result = qa({"question": query, "chat_history": chat_history})
Другие вопросы по тегам