Spaces:
Runtime error
Runtime error
from langchain import hub | |
from langchain.agents import AgentExecutor, create_openai_tools_agent, load_tools | |
from langchain_openai import ChatOpenAI | |
from gradio import ChatMessage | |
import gradio as gr | |
import os | |
from langchain_huggingface import ChatHuggingFace, HuggingFacePipeline | |
from langchain_community.llms import HuggingFaceEndpoint | |
from langchain_community.chat_models.huggingface import ChatHuggingFace | |
from transformers import BitsAndBytesConfig | |
from dotenv import load_dotenv | |
load_dotenv() | |
# Environment variables | |
HF_TOKEN = os.environ.get('HF_TOKEN') # Ensure token is set | |
#model = ChatOpenAI(temperature=0, streaming=True) | |
from langchain_community.llms import HuggingFaceEndpoint | |
from langchain_community.chat_models.huggingface import ChatHuggingFace | |
from transformers import BitsAndBytesConfig | |
#quantization to 8bit, must have GPU. | |
quantization_config = BitsAndBytesConfig( | |
load_in_4bit=True, | |
bnb_4bit_quant_type="nf4", | |
bnb_4bit_compute_dtype="float16", | |
bnb_4bit_use_double_quant=True, | |
) | |
# 2. Create model | |
llm = HuggingFacePipeline.from_model_id( | |
model_id="EpistemeAI/Fireball-Meta-Llama-3.1-8B-Instruct-Agent-0.003", | |
task="text-generation", | |
pipeline_kwargs=dict( | |
max_new_tokens=2048, | |
do_sample=False, | |
repetition_penalty=1.03, | |
return_full_text=False, | |
), | |
model_kwargs={"quantization_config": quantization_config}, | |
) | |
tools = load_tools(["serpapi"]) | |
# Get the prompt to use - you can modify this! | |
prompt = hub.pull("hwchase17/openai-tools-agent") | |
# print(prompt.messages) -- to see the prompt | |
# Construct the ReAct agent | |
agent = create_react_agent(llm, tools, prompt) | |
agent_executor = AgentExecutor(agent=agent, tools=tools).with_config( | |
{"run_name": "Agent"} | |
) | |
async def interact_with_langchain_agent(prompt, messages): | |
messages.append(ChatMessage(role="user", content=prompt)) | |
yield messages | |
async for chunk in agent_executor.astream( | |
{"input": prompt} | |
): | |
if "steps" in chunk: | |
for step in chunk["steps"]: | |
messages.append(ChatMessage(role="assistant", content=step.action.log, | |
metadata={"title": f"π οΈ Used tool {step.action.tool}"})) | |
yield messages | |
if "output" in chunk: | |
messages.append(ChatMessage(role="assistant", content=chunk["output"])) | |
yield messages | |
with gr.Blocks() as demo: | |
gr.Markdown("# Chat with a LangChain Agent π¦βοΈ and see its thoughts π") | |
chatbot = gr.Chatbot( | |
type="messages", | |
label="Agent", | |
avatar_images=( | |
None, | |
"https://em-content.zobj.net/source/twitter/141/parrot_1f99c.png", | |
), | |
) | |
input = gr.Textbox(lines=1, label="Chat Message") | |
input.submit(interact_with_langchain_agent, [input_2, chatbot_2], [chatbot_2]) | |
demo.launch() |