karubiniumu commited on
Commit
3461492
·
1 Parent(s): 4c6bbdb

description ですます調

Browse files
Files changed (4) hide show
  1. .gradio/certificate.pem +31 -0
  2. __pycache__/pipe.cpython-310.pyc +0 -0
  3. app.py +23 -19
  4. pipe.py +23 -16
.gradio/certificate.pem ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
31
+ -----END CERTIFICATE-----
__pycache__/pipe.cpython-310.pyc ADDED
Binary file (3.89 kB). View file
 
app.py CHANGED
@@ -4,31 +4,35 @@ import pytz
4
  import datetime
5
  import json
6
 
 
7
  def run(text):
8
- now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
9
- print('\ntext:',text,now)
10
- result = pipe.run({
11
- 'retrieve_prompt_builder':{'text':text},
12
- 'prompt_builder':{'text':text}
13
- },include_outputs_from=['embedding_retriever','parser'])
14
- for document in result['embedding_retriever']['documents']:
15
- print(document.score,document.id)
16
  print(document.content)
17
- parsed = result['parser']['parsed']
18
  print(parsed)
19
- return json.dumps(parsed,indent=2,ensure_ascii=False)
 
20
 
21
- title = '日本語 明確さ判定'
22
 
23
- with gr.Blocks(title=title,css_paths='./app.css') as app:
24
  gr.HTML(f'<h1 class="title">{title}</h1>')
25
- inputs=gr.TextArea(label='テキスト',lines=12)
26
- submit = gr.Button("送信",variant="primary")
27
- reply =gr.JSON(label='回答')
28
- submit.click(lambda: gr.update(interactive=False),inputs=None, outputs=submit) \
29
- .then(fn=run, inputs=inputs, outputs=reply ) \
30
- .then(fn=lambda: gr.update(interactive=True),inputs=None, outputs=submit)
 
 
31
 
32
 
33
  if __name__ == "__main__":
34
- app.launch()
 
4
  import datetime
5
  import json
6
 
7
+
8
  def run(text):
9
+ now = datetime.datetime.now(pytz.timezone("Asia/Tokyo"))
10
+ print("\ntext:", text, now)
11
+ result = pipe.run(
12
+ {"retrieve_prompt_builder": {"text": text}, "prompt_builder": {"text": text}},
13
+ include_outputs_from=["embedding_retriever", "parser"],
14
+ )
15
+ for document in result["embedding_retriever"]["documents"]:
16
+ print(document.score, document.id)
17
  print(document.content)
18
+ parsed = result["parser"]["parsed"]
19
  print(parsed)
20
+ return json.dumps(parsed, indent=2, ensure_ascii=False)
21
+
22
 
23
+ title = "日本語 明確さ判定"
24
 
25
+ with gr.Blocks(title=title, css_paths="./app.css") as app:
26
  gr.HTML(f'<h1 class="title">{title}</h1>')
27
+ inputs = gr.TextArea(label="テキスト", lines=12)
28
+ submit = gr.Button("送信", variant="primary")
29
+ reply = gr.JSON(label="回答")
30
+ submit.click(
31
+ lambda: gr.update(interactive=False), inputs=None, outputs=submit
32
+ ).then(fn=run, inputs=inputs, outputs=reply).then(
33
+ fn=lambda: gr.update(interactive=True), inputs=None, outputs=submit
34
+ )
35
 
36
 
37
  if __name__ == "__main__":
38
+ app.launch(share=True, debug=True)
pipe.py CHANGED
@@ -1,29 +1,34 @@
1
- from haystack import Document, Pipeline,component
2
- from haystack.components.embedders import SentenceTransformersDocumentEmbedder,SentenceTransformersTextEmbedder
 
 
 
3
  from haystack_integrations.document_stores.astra import AstraDocumentStore
4
  from haystack.components.writers import DocumentWriter
5
  from haystack.document_stores.types import DuplicatePolicy
6
  from haystack.components.builders import PromptBuilder
7
- from haystack_integrations.components.generators.google_ai import GoogleAIGeminiGenerator
 
 
8
  from haystack_integrations.components.retrievers.astra import AstraEmbeddingRetriever
9
  import json, json_repair
10
  from typing import List, Dict
11
  import os
12
 
13
  document_store = AstraDocumentStore(
14
- collection_name='company_contents',
15
- duplicates_policy=DuplicatePolicy.OVERWRITE
16
  )
17
 
18
- retrieve_template = '''
19
  次の日本語の文章の明確さを判定したい
20
  テキスト: {{text}}
21
- '''
22
 
23
  template = """
24
  どのように日本語の文章を記載するとよいかまとめた自社の資料があります。
25
  この資料を参考にして、以下のテキストの「明確さ」を様々な点から評価し、100点満点で点数を採点してください。
26
  次にその点数とした理由の解説と、どの辺が曖昧だったかを説明してください。
 
27
  テキストをより明確にする上で修正するべき箇所をピックアップし、その箇所が何行目の何文字目であるかと、修正前のテキストと修正後のテキストをまとめて提案して下さい。
28
  以上のことをマークダウンや説明なしで、JSON のみで回答して下さい。
29
  次のようなJSONフォーマット形式に必ず従ってください。
@@ -45,6 +50,7 @@ template = """
45
  テキスト: {{text}}
46
  """
47
 
 
48
  @component
49
  class ResultParser:
50
  @component.output_types(parsed=Dict)
@@ -62,23 +68,24 @@ class ResultParser:
62
  parsed = parsed[0]
63
  return {"parsed": parsed}
64
 
 
65
  retrieve_prompt_builder = PromptBuilder(template=retrieve_template)
66
- text_embedder = SentenceTransformersTextEmbedder(model=os.environ['embedding_model'])
67
  embedding_retriever = AstraEmbeddingRetriever(document_store=document_store)
68
- prompt_builder = PromptBuilder(template=template)
69
  llm = GoogleAIGeminiGenerator(model=os.environ["gemini_model"])
70
  parser = ResultParser()
71
  text_embedder.warm_up()
72
 
73
  pipe = Pipeline()
74
- pipe.add_component("retrieve_prompt_builder",retrieve_prompt_builder)
75
- pipe.add_component("text_embedder",text_embedder)
76
- pipe.add_component("embedding_retriever",embedding_retriever)
77
- pipe.add_component("prompt_builder",prompt_builder)
78
- pipe.add_component("llm",llm)
79
- pipe.add_component("parser",parser)
80
  pipe.connect("retrieve_prompt_builder.prompt", "text_embedder.text")
81
  pipe.connect("text_embedder", "embedding_retriever")
82
  pipe.connect("embedding_retriever.documents", "prompt_builder.documents")
83
  pipe.connect("prompt_builder", "llm")
84
- pipe.connect("llm.replies", "parser.replies")
 
1
+ from haystack import Document, Pipeline, component
2
+ from haystack.components.embedders import (
3
+ SentenceTransformersDocumentEmbedder,
4
+ SentenceTransformersTextEmbedder,
5
+ )
6
  from haystack_integrations.document_stores.astra import AstraDocumentStore
7
  from haystack.components.writers import DocumentWriter
8
  from haystack.document_stores.types import DuplicatePolicy
9
  from haystack.components.builders import PromptBuilder
10
+ from haystack_integrations.components.generators.google_ai import (
11
+ GoogleAIGeminiGenerator,
12
+ )
13
  from haystack_integrations.components.retrievers.astra import AstraEmbeddingRetriever
14
  import json, json_repair
15
  from typing import List, Dict
16
  import os
17
 
18
  document_store = AstraDocumentStore(
19
+ collection_name="company_contents", duplicates_policy=DuplicatePolicy.OVERWRITE
 
20
  )
21
 
22
+ retrieve_template = """
23
  次の日本語の文章の明確さを判定したい
24
  テキスト: {{text}}
25
+ """
26
 
27
  template = """
28
  どのように日本語の文章を記載するとよいかまとめた自社の資料があります。
29
  この資料を参考にして、以下のテキストの「明確さ」を様々な点から評価し、100点満点で点数を採点してください。
30
  次にその点数とした理由の解説と、どの辺が曖昧だったかを説明してください。
31
+ 説明の文章は「である」調ではなく「ですます」調の丁寧語の文章にしてください。
32
  テキストをより明確にする上で修正するべき箇所をピックアップし、その箇所が何行目の何文字目であるかと、修正前のテキストと修正後のテキストをまとめて提案して下さい。
33
  以上のことをマークダウンや説明なしで、JSON のみで回答して下さい。
34
  次のようなJSONフォーマット形式に必ず従ってください。
 
50
  テキスト: {{text}}
51
  """
52
 
53
+
54
  @component
55
  class ResultParser:
56
  @component.output_types(parsed=Dict)
 
68
  parsed = parsed[0]
69
  return {"parsed": parsed}
70
 
71
+
72
  retrieve_prompt_builder = PromptBuilder(template=retrieve_template)
73
+ text_embedder = SentenceTransformersTextEmbedder(model=os.environ["embedding_model"])
74
  embedding_retriever = AstraEmbeddingRetriever(document_store=document_store)
75
+ prompt_builder = PromptBuilder(template=template)
76
  llm = GoogleAIGeminiGenerator(model=os.environ["gemini_model"])
77
  parser = ResultParser()
78
  text_embedder.warm_up()
79
 
80
  pipe = Pipeline()
81
+ pipe.add_component("retrieve_prompt_builder", retrieve_prompt_builder)
82
+ pipe.add_component("text_embedder", text_embedder)
83
+ pipe.add_component("embedding_retriever", embedding_retriever)
84
+ pipe.add_component("prompt_builder", prompt_builder)
85
+ pipe.add_component("llm", llm)
86
+ pipe.add_component("parser", parser)
87
  pipe.connect("retrieve_prompt_builder.prompt", "text_embedder.text")
88
  pipe.connect("text_embedder", "embedding_retriever")
89
  pipe.connect("embedding_retriever.documents", "prompt_builder.documents")
90
  pipe.connect("prompt_builder", "llm")
91
+ pipe.connect("llm.replies", "parser.replies")