Интегрируйте агенты langchain как функции/инструменты openai.Python

Программы на Python
Anonymous
Интегрируйте агенты langchain как функции/инструменты openai.

Сообщение Anonymous »

В настоящее время я работаю с двумя агентами LangChain (агентами Pandas) над получением информации из больших наборов табличных данных. Изначально у меня были оба набора данных (Ирис и Титаник) в одном агенте, но разделение их на два агента повысило точность моих выводов.
В настоящее время у этих агентов отсутствует функциональность памяти, и последняя версия LangChain не поддерживает память через kwargs. Мне интересно, можно ли создать диалогового чат-бота, используя функцию завершения чата OpenAI, а также интегрировать эти два агента LangChain в качестве инструментов.
Моя цель — дать чат-боту возможность иметь память, позволяя ему обрабатывать ограниченное количество взаимодействий (например, 5) и переключаться между агентами Титаника и Ирис по мере необходимости, чтобы предоставлять точные ответы на основе предыдущих вопросов и контекста.
Я пытался следовать различным руководствам, но безуспешно. Как мне добиться такой интеграции?
Будет ли это возможно? Я получаю сообщение об ошибке.
# Required imports
import pandas as pd
from langchain.agents import create_pandas_dataframe_agent
from langchain.chat_models import ChatOpenAI
from openai import OpenAI
from tenacity import retry, wait_random_exponential, stop_after_attempt

# Load datasets
df_titanic = pd.read_csv("https://raw.githubusercontent.com/panda ... itanic.csv")
df_iris = pd.read_csv("https://gist.githubusercontent.com/curr ... 4/iris.csv")

# Initialize the OpenAI LLM
llm = ChatOpenAI(model="gpt-4")

# Create LangChain agents for both datasets
titanic_agent = create_pandas_dataframe_agent(llm, df_titanic, verbose=True)
iris_agent = create_pandas_dataframe_agent(llm, df_iris, verbose=True)

# Define the OpenAI client
client = OpenAI()

# Define tools for OpenAI
tools = [
{
"type": "function",
"function": {
"name": "titanic_agent",
"description": "Interacts with the Titanic dataset.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The question or query related to the Titanic dataset."
}
},
"required": ["query"]
},
}
},
{
"type": "function",
"function": {
"name": "iris_agent",
"description": "Interacts with the Iris dataset.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The question or query related to the Iris dataset."
}
},
"required": ["query"]
},
}
},
]

# Utility function for making requests to the Chat Completion API
@retry(wait=wait_random_exponential(multiplier=1, max=40), stop=stop_after_attempt(3))
def chat_completion_request(messages, tools=None):
response = client.chat.completions.create(
model="gpt-4",
messages=messages,
tools=tools
)
return response

# Main conversation loop
messages = []
messages.append({"role": "system", "content": "You are a chatbot that can answer questions using the Titanic and Iris datasets."})

while True:
user_input = input("User: ")
messages.append({"role": "user", "content": user_input})

# Get the response from OpenAI
chat_response = chat_completion_request(messages, tools=tools)
assistant_message = chat_response.choices[0].message
messages.append(assistant_message)

# Handle function call
if assistant_message.get("function_call"):
function_name = assistant_message.function_call.name
function_args = assistant_message.function_call.arguments

if function_name == "titanic_agent":
result = titanic_agent.run(function_args['query'])
elif function_name == "iris_agent":
result = iris_agent.run(function_args['query'])

# Append the function result to the messages
messages.append({"role": "function", "content": result})
print(f"Assistant: {result}")
else:
print(f"Assistant: {assistant_message['content']}")


Подробнее здесь: https://stackoverflow.com/questions/790 ... ions-tools

Вернуться в «Python»