zwgao commited on
Commit
eaf6e7b
1 Parent(s): f7b80cd

update code

Browse files
app.py CHANGED
@@ -17,11 +17,12 @@ import whisper
17
  import fire
18
  import gradio as gr
19
  import gradio.themes.base as ThemeBase
20
- from gradio.themes.utils import colors, fonts, sizes
21
- import os
22
  import sys
23
 
24
  sys.path.append(os.getcwd())
 
25
  from cllm.agents.builtin import plans
26
  from cllm.services.general.api import remote_logging
27
  from cllm.agents import container, FILE_EXT
@@ -199,6 +200,38 @@ class InteractionLoop:
199
  return self.add_audio(history, audio, role=role, append=append)
200
  return history, ""
201
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
202
  def add_text(self, history, text, role="assistant", append=False):
203
  if history is None:
204
  return history, ""
@@ -326,10 +359,7 @@ class InteractionLoop:
326
  for result_per_step, executed_solutions, wrapped_outputs in results:
327
  tool_name = json.dumps(result_per_step[0], ensure_ascii=False)
328
  args = json.dumps(result_per_step[1], ensure_ascii=False)
329
- if isinstance(result_per_step[2], Exception):
330
- ret = f"Internal error: {result_per_step[2]}"
331
- else:
332
- ret = json.dumps(result_per_step[2], ensure_ascii=False)
333
  history, _ = self.add_text(
334
  history,
335
  f"Call **{tool_name}:**<br>&nbsp;&nbsp;&nbsp;&nbsp;**Args**: {plain2md(args)}<br>&nbsp;&nbsp;&nbsp;&nbsp;**Ret**: {plain2md(ret)}",
@@ -552,37 +582,43 @@ def app(controller="cllm.agents.tog.Controller", https=False, **kwargs):
552
 
553
  with gr.Column(scale=5):
554
  with gr.Tabs():
555
- with gr.Tab("Mask Input"):
556
- image_mask = gr.components.Image(
557
- sources="upload",
558
  interactive=True,
559
  type="filepath",
560
  )
561
- # with gr.Row():
562
- # mask_submit_btn = gr.Button("Segment", variant="primary")
563
  with gr.Row():
564
- image_submit_btn = gr.Button("Upload", variant="primary")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
565
 
566
  with gr.Tab("Plan"):
567
  planbot = gr.JSON(elem_classes="json")
568
 
569
  with gr.Tab("Memory"):
570
  memory_table = gr.DataFrame(
571
- # value=convert_dict_to_frame(builtin_resources),
572
  label="Memory",
573
  headers=["Resource", "Type"],
574
  row_count=5,
575
  wrap=True,
576
  )
577
- gr.Examples(
578
- [
579
- osp.join("./assets/resources", item)
580
- for item in builtin_resources.keys()
581
- if item.endswith(".png")
582
- ],
583
- inputs=[image_mask],
584
- label="File Examples",
585
- )
586
 
587
  chatbot.like(
588
  loop.vote,
@@ -595,14 +631,8 @@ def app(controller="cllm.agents.tog.Controller", https=False, **kwargs):
595
  chatbot,
596
  ],
597
  )
598
- reply_inputs = [user_state, image_mask, chatbot, planbot]
599
- reply_outputs = [
600
- user_state,
601
- # image_mask,
602
- chatbot,
603
- memory_table,
604
- # planbot,
605
- ]
606
 
607
  add_text = [
608
  partial(loop.add_text, role="human"),
@@ -633,7 +663,7 @@ def app(controller="cllm.agents.tog.Controller", https=False, **kwargs):
633
  upload_btn.upload(
634
  loop.add_file,
635
  inputs=[user_state, chatbot, upload_btn],
636
- outputs=[user_state, image_mask, chatbot, memory_table],
637
  )
638
  record.click(
639
  on_switch_input,
@@ -641,7 +671,7 @@ def app(controller="cllm.agents.tog.Controller", https=False, **kwargs):
641
  [state_input, text, audio],
642
  )
643
 
644
- image_mask.select(
645
  loop.save_point, [user_state, chatbot], [user_state, chatbot]
646
  ).then(loop.plan, reply_inputs, reply_inputs).then(
647
  loop.execute, reply_inputs, reply_inputs
@@ -649,22 +679,28 @@ def app(controller="cllm.agents.tog.Controller", https=False, **kwargs):
649
  loop.reply, [user_state, chatbot], reply_outputs
650
  )
651
 
652
- image_mask.upload(
653
  loop.add_file,
654
- inputs=[user_state, chatbot, image_mask],
655
- outputs=[user_state, image_mask, chatbot, memory_table],
656
  )
657
- image_submit_btn.click(
658
  loop.add_file,
659
- inputs=[user_state, chatbot, image_mask],
660
- outputs=[user_state, image_mask, chatbot, memory_table],
 
 
 
 
 
 
661
  )
662
 
663
  if https:
664
  demo.queue().launch(
665
  server_name="0.0.0.0",
666
- # ssl_certfile="./certificate/cert.pem",
667
- # ssl_keyfile="./certificate/key.pem",
668
  ssl_verify=False,
669
  show_api=False,
670
  allowed_paths=[
 
17
  import fire
18
  import gradio as gr
19
  import gradio.themes.base as ThemeBase
20
+ from gradio.themes.utils import colors, sizes
21
+ from gradio.components.image_editor import Brush
22
  import sys
23
 
24
  sys.path.append(os.getcwd())
25
+
26
  from cllm.agents.builtin import plans
27
  from cllm.services.general.api import remote_logging
28
  from cllm.agents import container, FILE_EXT
 
200
  return self.add_audio(history, audio, role=role, append=append)
201
  return history, ""
202
 
203
+ def add_sketch(self, user_state, history, sketch):
204
+ if user_state.get("resources", None) is None:
205
+ user_state["resources"] = OrderedDict()
206
+
207
+ if sketch is None or "layers" not in sketch:
208
+ return user_state, None, history, None
209
+
210
+ mask = None
211
+ for layer in sketch["layers"]:
212
+ alpha = layer[:, :, 3:] // 255
213
+ if mask is None:
214
+ mask = np.ones_like(layer[:, :, :3]) * 255
215
+ mask = mask * (1 - alpha) + layer[:, :, :3] * alpha
216
+
217
+ ext = "png"
218
+ r_type = "scribble"
219
+ new_filename = self._gen_new_name(r_type, ext)
220
+ saved_path = get_real_path(new_filename)
221
+ if ext in FILE_EXT["image"]:
222
+ Image.fromarray(mask).save(saved_path, "png")
223
+ user_state["sketch_image"] = new_filename
224
+
225
+ logger.info(f"add file: {saved_path}")
226
+ user_state["resources"][new_filename] = r_type
227
+ history, _ = self.add_text(history, (saved_path,), role="human", append=False)
228
+ history, _ = self.add_text(
229
+ history, f"Recieved file {new_filename}", role="assistant", append=False
230
+ )
231
+ memory = convert_dict_to_frame(user_state["resources"])
232
+
233
+ return user_state, history, memory
234
+
235
  def add_text(self, history, text, role="assistant", append=False):
236
  if history is None:
237
  return history, ""
 
359
  for result_per_step, executed_solutions, wrapped_outputs in results:
360
  tool_name = json.dumps(result_per_step[0], ensure_ascii=False)
361
  args = json.dumps(result_per_step[1], ensure_ascii=False)
362
+ ret = json.dumps(result_per_step[2], ensure_ascii=False)
 
 
 
363
  history, _ = self.add_text(
364
  history,
365
  f"Call **{tool_name}:**<br>&nbsp;&nbsp;&nbsp;&nbsp;**Args**: {plain2md(args)}<br>&nbsp;&nbsp;&nbsp;&nbsp;**Ret**: {plain2md(ret)}",
 
582
 
583
  with gr.Column(scale=5):
584
  with gr.Tabs():
585
+ with gr.Tab("Click"):
586
+ click_image = gr.Image(
587
+ sources=["upload", "clipboard"],
588
  interactive=True,
589
  type="filepath",
590
  )
 
 
591
  with gr.Row():
592
+ click_image_submit_btn = gr.Button(
593
+ "Upload", variant="primary"
594
+ )
595
+ gr.Examples(
596
+ [
597
+ osp.join("./assets/resources", item)
598
+ for item in builtin_resources.keys()
599
+ if item.endswith(".png")
600
+ ],
601
+ inputs=[click_image],
602
+ label="File Examples",
603
+ )
604
+
605
+ with gr.Tab("Draw"):
606
+ sketch = gr.Sketchpad(
607
+ sources=(), brush=Brush(colors=["#000000"])
608
+ )
609
+ with gr.Row():
610
+ sketch_submit_btn = gr.Button("Upload", variant="primary")
611
 
612
  with gr.Tab("Plan"):
613
  planbot = gr.JSON(elem_classes="json")
614
 
615
  with gr.Tab("Memory"):
616
  memory_table = gr.DataFrame(
 
617
  label="Memory",
618
  headers=["Resource", "Type"],
619
  row_count=5,
620
  wrap=True,
621
  )
 
 
 
 
 
 
 
 
 
622
 
623
  chatbot.like(
624
  loop.vote,
 
631
  chatbot,
632
  ],
633
  )
634
+ reply_inputs = [user_state, click_image, chatbot, planbot]
635
+ reply_outputs = [user_state, chatbot, memory_table]
 
 
 
 
 
 
636
 
637
  add_text = [
638
  partial(loop.add_text, role="human"),
 
663
  upload_btn.upload(
664
  loop.add_file,
665
  inputs=[user_state, chatbot, upload_btn],
666
+ outputs=[user_state, click_image, chatbot, memory_table],
667
  )
668
  record.click(
669
  on_switch_input,
 
671
  [state_input, text, audio],
672
  )
673
 
674
+ click_image.select(
675
  loop.save_point, [user_state, chatbot], [user_state, chatbot]
676
  ).then(loop.plan, reply_inputs, reply_inputs).then(
677
  loop.execute, reply_inputs, reply_inputs
 
679
  loop.reply, [user_state, chatbot], reply_outputs
680
  )
681
 
682
+ click_image.upload(
683
  loop.add_file,
684
+ inputs=[user_state, chatbot, click_image],
685
+ outputs=[user_state, click_image, chatbot, memory_table],
686
  )
687
+ click_image_submit_btn.click(
688
  loop.add_file,
689
+ inputs=[user_state, chatbot, click_image],
690
+ outputs=[user_state, click_image, chatbot, memory_table],
691
+ )
692
+
693
+ sketch_submit_btn.click(
694
+ loop.add_sketch,
695
+ inputs=[user_state, chatbot, sketch],
696
+ outputs=[user_state, chatbot, memory_table],
697
  )
698
 
699
  if https:
700
  demo.queue().launch(
701
  server_name="0.0.0.0",
702
+ ssl_certfile="./certificate/cert.pem",
703
+ ssl_keyfile="./certificate/key.pem",
704
  ssl_verify=False,
705
  show_api=False,
706
  allowed_paths=[
builtin_plan.json CHANGED
@@ -1,15 +1 @@
1
- {
2
- "you know what I want": [
3
- [
4
- {
5
- "tool_name": "text_to_image",
6
- "inputs": {
7
- "text": "a dog"
8
- },
9
- "outputs": [
10
- "image"
11
- ]
12
- }
13
- ]
14
- ]
15
- }
 
1
+ {}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cllm/agents/tog/interpretor.py CHANGED
@@ -94,13 +94,14 @@ class Interpretor:
94
  zip(action.outputs, tool_outputs)
95
  ):
96
  memory[arg_name] = arg_value
97
- if arg_value is None:
98
  outputs.append(arg_value)
 
99
  wrapped_outputs.append(
100
  auto_type(
101
  arg_name,
102
  DataType.TEXT,
103
- None,
104
  )
105
  )
106
  continue
 
94
  zip(action.outputs, tool_outputs)
95
  ):
96
  memory[arg_name] = arg_value
97
+ if arg_value is None or isinstance(arg_value, Exception):
98
  outputs.append(arg_value)
99
+ arg_value = f"{arg_value}"
100
  wrapped_outputs.append(
101
  auto_type(
102
  arg_name,
103
  DataType.TEXT,
104
+ arg_value,
105
  )
106
  )
107
  continue
cllm/agents/tog/responser.py CHANGED
@@ -56,7 +56,7 @@ def generate_response(user_input, solution, output_files):
56
  logger.info("##### Response Generation #####")
57
  logger.info(content)
58
 
59
- chat = ChatOpenAI(model_name="gpt-3.5-turbo-1106")
60
  messages = [SystemMessage(content=content)]
61
  output = chat(messages)
62
  logger.info(output)
 
56
  logger.info("##### Response Generation #####")
57
  logger.info(content)
58
 
59
+ chat = ChatOpenAI(model_name="gpt-3.5-turbo-16k")
60
  messages = [SystemMessage(content=content)]
61
  output = chat(messages)
62
  logger.info(output)
cllm/services/nlp/api.py CHANGED
@@ -34,7 +34,7 @@ __ALL__ = [
34
  ]
35
 
36
 
37
- HOST = os.environ.get("CLLM_SERVICES_HOST", "localhost")
38
  PORT = os.environ.get("CLLM_SERVICES_PORT", 10056)
39
 
40
 
@@ -63,7 +63,7 @@ def question_answering_with_context(context: str, question: str, **kwargs):
63
 
64
 
65
  def openai_chat_model(input_msg: str, **kwargs):
66
- chat = ChatOpenAI()
67
  chat_log = []
68
  default_sys_msg = "Your name is ControlLLM, an AI-powered assistant developed by OpenGVLab from Shanghai AI Lab. You need to respond to user requests based on the following information."
69
  sys_msg = kwargs.get("sys_msg", default_sys_msg)
 
34
  ]
35
 
36
 
37
+ HOST = "localhost"
38
  PORT = os.environ.get("CLLM_SERVICES_PORT", 10056)
39
 
40
 
 
63
 
64
 
65
  def openai_chat_model(input_msg: str, **kwargs):
66
+ chat = ChatOpenAI(model_name="gpt-3.5-turbo-16k")
67
  chat_log = []
68
  default_sys_msg = "Your name is ControlLLM, an AI-powered assistant developed by OpenGVLab from Shanghai AI Lab. You need to respond to user requests based on the following information."
69
  sys_msg = kwargs.get("sys_msg", default_sys_msg)
cllm/services/nlp/llms/chat_models.py CHANGED
@@ -1,4 +1,5 @@
1
  import os
 
2
  import openai
3
  import requests
4
  from typing import (
@@ -39,6 +40,8 @@ class ChatOpenAI:
39
  self.model_kwargs = model_kwargs
40
  self.api_key = os.environ.get("OPENAI_API_KEY", openai_api_key)
41
  self.base_url = os.environ.get("OPENAI_BASE_URL", openai_base_url)
 
 
42
 
43
  def __call__(self, messages: List[BaseMessage], **kwargs):
44
  stream = kwargs.get("stream", False)
@@ -210,7 +213,7 @@ class ChatLLAMA2(SimpleChatModel):
210
 
211
 
212
  if __name__ == "__main__":
213
- chat = ChatOpenAI()
214
  msg = [
215
  SystemMessage(content="You are a helpful assistant."),
216
  HumanMessage(content="Hello!"),
 
1
  import os
2
+ from turtle import mode
3
  import openai
4
  import requests
5
  from typing import (
 
40
  self.model_kwargs = model_kwargs
41
  self.api_key = os.environ.get("OPENAI_API_KEY", openai_api_key)
42
  self.base_url = os.environ.get("OPENAI_BASE_URL", openai_base_url)
43
+ # openai.api_key = self.api_key
44
+ # openai.base_url = self.base_url
45
 
46
  def __call__(self, messages: List[BaseMessage], **kwargs):
47
  stream = kwargs.get("stream", False)
 
213
 
214
 
215
  if __name__ == "__main__":
216
+ chat = ChatOpenAI(model_name="gpt-3.5-turbo-1106")
217
  msg = [
218
  SystemMessage(content="You are a helpful assistant."),
219
  HumanMessage(content="Hello!"),