Spaces:
Runtime error
Runtime error
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from langchain_huggingface import HuggingFaceEndpoint as HF
|
2 |
+
from subprocess import Popen, PIPE as P
|
3 |
+
from langchain_experimental.tools.python.tool import PythonREPLTool as PYT
|
4 |
+
from langchain.agents import load_tools,create_structed_chat_agent as Agent,AgentExecutor as Ex
|
5 |
+
from langchain.agents.agent_toolkits import create_retriever_tool as crt
|
6 |
+
from langchain_community.agent_toolkits import FileManagementToolkit as FMT
|
7 |
+
from langchain.tools import Tool,YoutubeSearchTool as YTS
|
8 |
+
from langchain.memory import ConversationalBufferMomory as MEM,RedisChatHistory as HIS
|
9 |
+
from langchain.schema import SystemMessage as SM,HumanMessage as HM
|
10 |
+
from langchain import hub
|
11 |
+
import chainlit as cl
|
12 |
+
import os
|
13 |
+
from langchain.retrievers import WikipediaRetriever as Wiki
|
14 |
+
def terminal(c):
|
15 |
+
a=Popen(c,shell=True,stdin=P,stdout=P,stderr=P)
|
16 |
+
return a.stdout.read()+a.stderr.read()
|
17 |
+
tools=FMT().get_tools()
|
18 |
+
tools.append(PYT())
|
19 |
+
tools.append(YTS())
|
20 |
+
tools.extend(load_tools(["requests"]))
|
21 |
+
tools.extend(load_tools(["llm-math","ddg-search"]))
|
22 |
+
tools.append(Tool.from_function(func=terminal,name="terminal"))
|
23 |
+
tools.append(crt(name="wiki",description="위키 백과를 검색하여 정보를 가져온다",retriever=Wiki(lang="ko",top_k_results=1)))
|
24 |
+
llm=HF(repo_id="peterpeter8585/syai4.0")
|
25 |
+
prompt=hub.pull("hwchase17/structed-chat-agent")
|
26 |
+
@cl.on_chat_start
|
27 |
+
async def on_chat_start():
|
28 |
+
thread_id=None
|
29 |
+
while not thread_id:
|
30 |
+
res=await cl.AskUserMessage(content="Please enter the username and the id.ex) peterpeter9595_chat1").send()
|
31 |
+
if res:
|
32 |
+
thread_id=res["content"]
|
33 |
+
history=HIS(session_id=thread_id, url=os.environ["URL"])
|
34 |
+
memory=MEM(chat_memory=history,memory_key="history")
|
35 |
+
m_r=memory.load_memory_variables({})["history"]
|
36 |
+
agent=EX(agent=Agent(llm,tools,prompt,memory_key="history"),tools=tools,verbose=True,handle_parsing_errors=True)
|
37 |
+
|
38 |
+
for m in m_r:
|
39 |
+
if isinstance(m,HM):
|
40 |
+
await cl.Message(author="User",content=f"{m.content}").send()
|
41 |
+
else:
|
42 |
+
await cl.Message(author="ChatBot",content=f"{m.content}").send()
|
43 |
+
cl.user_session.set("agent",agent)
|
44 |
+
@cl.on_message
|
45 |
+
async def on_message(message:str):
|
46 |
+
exe=cl.user_session.get("agent")
|
47 |
+
result=exe(message)
|
48 |
+
await cl.Message(content=result["output"]).send()
|