peterpeter8585 commited on
Commit
b472985
·
verified ·
1 Parent(s): 97fbe48

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -0
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()