AliA1997 commited on
Commit
628f233
·
1 Parent(s): 6d4132e

Configured llm with together api provider to handle prompts.

Browse files
Files changed (2) hide show
  1. agent.py +46 -54
  2. app.py +1 -0
agent.py CHANGED
@@ -1,6 +1,8 @@
 
1
  from typing import TypedDict, Annotated, Optional, Any
2
  from langgraph.graph.message import add_messages
3
- from langchain_huggingface import HuggingFaceEndpoint, ChatHuggingFace
 
4
  from langchain_core.messages import AnyMessage, HumanMessage
5
  from langgraph.graph import StateGraph, START, END
6
  from langgraph.prebuilt import ToolNode
@@ -9,6 +11,8 @@ from langchain_core.tools import Tool
9
  from search_tools import vector_store, arvix_search, question_search, web_search, wiki_search
10
  from math_tools import add, subtract, modulus, multiply, divide
11
 
 
 
12
 
13
  tools = [
14
  add,
@@ -30,24 +34,27 @@ def build_system_prompt():
30
 
31
  class Bariq:
32
  def __init__(self):
33
- base_llm = HuggingFaceEndpoint(
34
- repo_id="Qwen/Qwen2.5-32B-Instruct",
35
- task="text-generation",
36
- max_new_tokens=1024,
37
- temperature=0.7,
 
 
 
 
 
38
  )
39
-
40
- # Wrap in ChatHuggingFace so it behaves like ChatOpenAI
41
- chat_llm = ChatHuggingFace(llm=base_llm)
42
-
43
  # Bind your tools exactly like before
44
- self.llm = chat_llm.bind_tools(tools)
45
-
46
- # self.llm = ChatOpenAI(model="gpt-5-nano").bind_tools(tools)
47
 
48
 
49
  class AgentState(TypedDict):
50
  messages: Annotated[list[AnyMessage], add_messages]
 
 
51
 
52
 
53
  agent = Bariq()
@@ -61,43 +68,31 @@ def assistant(state: AgentState) -> AgentState:
61
  try:
62
 
63
  prompts = []
64
- for m in state["messages"]:
65
- # print("Message: " + str(m))
66
  prompt_content = getattr(m, "content", None)
67
  message_type = getattr(m, "type", None)
68
  print("prompt_content " + prompt_content)
69
- # print("getattr(m, ""type"", None) " + getattr(m, "type", None))
70
 
71
 
72
- # if message_type == "human":
73
- # prompts.append({
74
- # "role": "user",
75
- # "content": prompt_content
76
- # # "content": [{"type": "text", "text": prompt_content}]
77
- # })
78
- # elif message_type == "ai":
79
- # prompts.append({
80
- # "role": "assistant",
81
- # "content": prompt_content
82
- # # "content": [{"type": "text", "text": prompt_content}]
83
- # })
84
- # else:
85
- # prompts.append({
86
- # "role": "system",
87
- # "content": prompt_content
88
- # # "content": [{"type": "text", "text": prompt_content}]
89
- # })
90
 
91
  # print("Assistant Node Prompts: " + str(prompts))
92
- print("Assistant Node Prompts: " + str(state["messages"]))
93
 
94
- llm_response = agent.llm.invoke(state["messages"])
95
-
96
- print("LLM Response: ", str(llm_response))
97
- print("LLM Response content:", llm)
98
 
 
99
  return {
100
- "messages": state["messages"]
 
101
  }
102
  except Exception as e:
103
  print("Exception in Assistant Node:", e)
@@ -108,30 +103,27 @@ def assistant(state: AgentState) -> AgentState:
108
  def retriever(state: AgentState) -> AgentState:
109
  """Retriever Node"""
110
  try:
111
- # print("Retriever Node Messages: " + str(state["messages"]))
112
- # for m in state["messages"]:
113
- # print("getattr(m, ""type""): " + getattr(m, "type", None))
114
  user_messages = [m for m in state["messages"] if getattr(m, "type", None) == "human"]
115
  query = getattr(user_messages[-1], "content", None)
116
- # print("query: " + query)
117
-
118
  # Vector search
119
  similar_docs = vector_store.similarity_search(query, k=2)
120
 
 
121
  if similar_docs:
122
  context = similar_docs[0].page_content
123
-
124
  return {
125
- "messages": state["messages"] + [HumanMessage(content=context)]
 
 
 
 
 
 
126
  }
127
 
128
- # print("Retriever response text: ", response_text)
129
-
130
-
131
- return {
132
- "messages": state["messages"]
133
- }
134
-
135
  except Exception as e:
136
  print("Exception in retriever node:", e)
137
 
 
1
+ import os
2
  from typing import TypedDict, Annotated, Optional, Any
3
  from langgraph.graph.message import add_messages
4
+ from langchain_openai import ChatOpenAI
5
+
6
  from langchain_core.messages import AnyMessage, HumanMessage
7
  from langgraph.graph import StateGraph, START, END
8
  from langgraph.prebuilt import ToolNode
 
11
  from search_tools import vector_store, arvix_search, question_search, web_search, wiki_search
12
  from math_tools import add, subtract, modulus, multiply, divide
13
 
14
+ hf_token = os.environ.get("HF_TOKEN")
15
+ together_token = os.environ.get("TOGETHER_API_TOKEN")
16
 
17
  tools = [
18
  add,
 
34
 
35
  class Bariq:
36
  def __init__(self):
37
+ base_llm = ChatOpenAI(
38
+ model="ServiceNow-AI/Apriel-1.6-15b-Thinker",
39
+ openai_api_key=together_token,
40
+ openai_api_base="https://api.together.xyz/v1",
41
+ max_tokens=1024,
42
+ temperature=0.1,
43
+ top_p=0.9,
44
+ frequency_penalty=0.0,
45
+ presence_penalty=0.0,
46
+ stop=["</s>", "User:", "Assistant:", "Final answer:"],
47
  )
48
+
 
 
 
49
  # Bind your tools exactly like before
50
+ # self.llm = base_llm.bind(tools=tools)
51
+ self.llm = base_llm
 
52
 
53
 
54
  class AgentState(TypedDict):
55
  messages: Annotated[list[AnyMessage], add_messages]
56
+ previous_messages: Optional[Annotated[list[AnyMessage], add_messages]]
57
+
58
 
59
 
60
  agent = Bariq()
 
68
  try:
69
 
70
  prompts = []
71
+ for m in state["previous_messages"]:
 
72
  prompt_content = getattr(m, "content", None)
73
  message_type = getattr(m, "type", None)
74
  print("prompt_content " + prompt_content)
 
75
 
76
 
77
+ if message_type == "human" or message_type == "ai":
78
+ prompts.append({
79
+ "role": "assistant",
80
+ "content": prompt_content
81
+ })
82
+ else:
83
+ prompts.append({
84
+ "role": "system",
85
+ "content": prompt_content
86
+ })
 
 
 
 
 
 
 
 
87
 
88
  # print("Assistant Node Prompts: " + str(prompts))
 
89
 
90
+ llm_response = agent.llm.invoke(prompts)
 
 
 
91
 
92
+ print("HumanMessage(content=llm_response.content) " + str(HumanMessage(content=llm_response.content)))
93
  return {
94
+ "previous_messages": state["previous_messages"],
95
+ "messages": state["previous_messages"] + [HumanMessage(content=llm_response.content)]
96
  }
97
  except Exception as e:
98
  print("Exception in Assistant Node:", e)
 
103
  def retriever(state: AgentState) -> AgentState:
104
  """Retriever Node"""
105
  try:
106
+
 
 
107
  user_messages = [m for m in state["messages"] if getattr(m, "type", None) == "human"]
108
  query = getattr(user_messages[-1], "content", None)
109
+
 
110
  # Vector search
111
  similar_docs = vector_store.similarity_search(query, k=2)
112
 
113
+ print("similar documents:", str(similar_docs))
114
  if similar_docs:
115
  context = similar_docs[0].page_content
116
+ new_messages = state["messages"] + [HumanMessage(content=context)]
117
  return {
118
+ "previous_messages": state["messages"],
119
+ "messages": new_messages
120
+ }
121
+ else:
122
+ return {
123
+ "previous_messages": state["messages"] if state["previous_messages"] is None else state["previous_messages"],
124
+ "messages": state["messages"]
125
  }
126
 
 
 
 
 
 
 
 
127
  except Exception as e:
128
  print("Exception in retriever node:", e)
129
 
app.py CHANGED
@@ -35,6 +35,7 @@ def respond(
35
 
36
  response_messages = workflow.invoke(
37
  {
 
38
  "messages": formatted_messages
39
  }
40
  )
 
35
 
36
  response_messages = workflow.invoke(
37
  {
38
+ "previous_messages": None,
39
  "messages": formatted_messages
40
  }
41
  )