Попытка создать цепочку LangChain в сочетании с локальной системой чат-ботов.

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

      # AI Server

from flask import Flask, request, jsonify
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
import torch
#import os
#os.environ["CUDA_VISIBLE_DEVICES"]="1,2"


app = Flask(__name__)

model_id = "h2oai/h2ogpt-gm-oasst1-en-2048-falcon-7b-v3"
tokenizer = AutoTokenizer.from_pretrained(model_id)

model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
    device_map={"": 0},
)

pipeline = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
)

@app.route('/generate', methods=['POST'])
def generate():
    content = request.json
    inp = content.get("text", "")

    sequences = pipeline(
        inp,
        max_length=1024,
        do_sample=True,
        top_k=10,
        num_return_sequences=1,
        eos_token_id=tokenizer.eos_token_id,
    )

    decoded = sequences[0]['generated_text']
    print("===================================================")
    print(f"Input: {inp}")
    print(f"Output: {decoded}")
    print("===================================================")
    return jsonify({'generated_text': decoded})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)  # Set the host to '0.0.0.0' to make it accessible from your local network
      # AI Client

import requests
import json
import colorama

class AIChat():

    SERVER_IP = "127.0.0.1" # replace with local or public IP of your server.
    URL = f"http://{SERVER_IP}:5000/generate"

    USERTOKEN = "USER:\n"
    ENDTOKEN = "<|endoftext|>"
    ASSISTANTTOKEN = "\nASSISTANT:\n"

    history = ""

    def __call__(self, text):
        context = self.history + self.USERTOKEN + text + self.ASSISTANTTOKEN
        output = self.prompt(context)
        history = output+'\n'
        just_latest_asst_output = output.split(context)[1].split(self.USERTOKEN)[0]
        
        return just_latest_asst_output

    
    def prompt(self, inp):
        data = {"text": inp}
        headers = {'Content-type': 'application/json'}

        response = requests.post(self.URL, data=json.dumps(data), headers=headers)

        if response.status_code == 200:
            return response.json()["generated_text"]
        else:
            return "Error:", response.status_code
      # Tying code together with Langchain

import os
from langchain.llms import HuggingFacePipeline
from langchain.llms import HuggingFaceHub
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.prompts import PromptTemplate
from langchain import LLMChain

from ai_client import AIChat


# Create Chat Object
llm = AIChat()

# Print Text
print("=============================================== Header 1")
text = "List 5 vacation destinations for someone who likes to eat pasta?"
print(llm(text))
print()


# Prompt Template
print("=============================================== Header 2")
prompt = PromptTemplate(
    input_variables=["food"],
    template="List 5 vacation destinations for someone who likes to eat {food}?",
)

print(prompt.format(food="dessert"))
print(llm(prompt.format(food="dessert")))
print()

# Chaining
print("=============================================== Header 3")
prompt = PromptTemplate(
    input_variables=["food"],
    template="List 5 vacation destinations for someone who likes to eat {food}?",
)

chain = LLMChain(llm=llm, prompt=prompt)
print(chain)
print(chain.run("fruit"))
print()

Я надеялся, что мой LLM будет работать с LLMChain LLM. К сожалению, когда я добрался до «Заголовка 3», я получил следующую ошибку:

      =============================================== Header 3
Traceback (most recent call last):
  File "/home/ehall/Desktop/AI_Project/Assistant/example1.py", line 47, in <module>
    chain = LLMChain(llm=llm, prompt=prompt)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "pydantic/main.py", line 341, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 1 validation error for LLMChain
llm
  value is not a valid dict (type=type_error.dict)
[ehall@EndSys Assistant]$ 

Я попытался отследить проблему, по сути, кажется, что моя переменная LLM должна быть dict, но после просмотра официальной документации, видео и, возможно, альтернативных методов, я все больше запутываюсь в том, как решить эту проблему, чем изначально.

Буду признателен, если кто-нибудь сможет помочь мне решить эту проблему.

0 ответов

Другие вопросы по тегам