karubiniumu commited on
Commit
bb1fcbd
·
1 Parent(s): 728f164
Files changed (3) hide show
  1. app.py +6 -2
  2. pipe.py +35 -9
  3. requirements.txt +2 -1
app.py CHANGED
@@ -8,8 +8,12 @@ def run(text):
8
  now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
9
  print('\ntext:',text,now)
10
  result = pipe.run({
11
- "prompt_builder":{"text":text}
12
- })
 
 
 
 
13
  parsed = result['parser']['parsed']
14
  print(parsed)
15
  return json.dumps(parsed,indent=2,ensure_ascii=False)
 
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)
pipe.py CHANGED
@@ -1,18 +1,31 @@
1
- import json, json_repair
2
- from typing import List, Dict
3
- from haystack import Pipeline, component
 
 
4
  from haystack.components.builders import PromptBuilder
5
  from haystack_integrations.components.generators.google_ai import GoogleAIGeminiGenerator
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
  template = """
8
- 次のテキストに基づいて、JSON 形式で 回答を生成して下さい。
9
- テキストの「明確さ」を様々な点から評価し、100点満点で点数を採点してください。
10
  次にその点数とした理由の解説と、どの辺が曖昧だったかを説明してください。
11
  テキストをより明確にする上で修正するべき箇所をピックアップし、その箇所が何行目の何文字目であるかと、修正前のテキストと修正後のテキストをまとめて提案して下さい。
12
-
13
  以上のことをマークダウンや説明なしで、JSON のみで回答して下さい。
14
  次のようなJSONフォーマット形式に必ず従ってください。
15
-
16
  {
17
  "score" : 採点した点数(数値) ,
18
  "description": "その点数になった理由",
@@ -24,7 +37,10 @@ template = """
24
  }, ...
25
  ]
26
  }
27
-
 
 
 
28
  テキスト: {{text}}
29
  """
30
 
@@ -45,13 +61,23 @@ class ResultParser:
45
  parsed = parsed[0]
46
  return {"parsed": parsed}
47
 
 
 
 
48
  prompt_builder = PromptBuilder(template=template)
49
- llm = GoogleAIGeminiGenerator(model="models/gemini-1.5-flash")
50
  parser = ResultParser()
 
51
 
52
  pipe = Pipeline()
 
 
 
53
  pipe.add_component("prompt_builder",prompt_builder)
54
  pipe.add_component("llm",llm)
55
  pipe.add_component("parser",parser)
 
 
 
56
  pipe.connect("prompt_builder", "llm")
57
  pipe.connect("llm.replies", "parser.replies")
 
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
+
12
+ document_store = AstraDocumentStore(
13
+ collection_name='company_contents',
14
+ duplicates_policy=DuplicatePolicy.OVERWRITE
15
+ )
16
+
17
+ retrieve_template = '''
18
+ 次の日本語の文章の明確さを判定したい
19
+ テキスト: {{text}}
20
+ '''
21
 
22
  template = """
23
+ どのように日本語の文章を記載するとよいかまとめた自社の資料があります。
24
+ この資料を参考にして、以下のテキストの「明確さ」を様々な点から評価し、100点満点で点数を採点してください。
25
  次にその点数とした理由の解説と、どの辺が曖昧だったかを説明してください。
26
  テキストをより明確にする上で修正するべき箇所をピックアップし、その箇所が何行目の何文字目であるかと、修正前のテキストと修正後のテキストをまとめて提案して下さい。
 
27
  以上のことをマークダウンや説明なしで、JSON のみで回答して下さい。
28
  次のようなJSONフォーマット形式に必ず従ってください。
 
29
  {
30
  "score" : 採点した点数(数値) ,
31
  "description": "その点数になった理由",
 
37
  }, ...
38
  ]
39
  }
40
+ 資料:
41
+ {% for document in documents %}
42
+ {{ document.content }}
43
+ {% endfor %}
44
  テキスト: {{text}}
45
  """
46
 
 
61
  parsed = parsed[0]
62
  return {"parsed": parsed}
63
 
64
+ retrieve_prompt_builder = PromptBuilder(template=retrieve_template)
65
+ text_embedder = SentenceTransformersTextEmbedder(model=os.environ['embedding_model'])
66
+ embedding_retriever = AstraEmbeddingRetriever(document_store=document_store)
67
  prompt_builder = PromptBuilder(template=template)
68
+ llm = GoogleAIGeminiGenerator(model=os.environ["gemini_model"])
69
  parser = ResultParser()
70
+ text_embedder.warm_up()
71
 
72
  pipe = Pipeline()
73
+ pipe.add_component("retrieve_prompt_builder",retrieve_prompt_builder)
74
+ pipe.add_component("text_embedder",text_embedder)
75
+ pipe.add_component("embedding_retriever",embedding_retriever)
76
  pipe.add_component("prompt_builder",prompt_builder)
77
  pipe.add_component("llm",llm)
78
  pipe.add_component("parser",parser)
79
+ pipe.connect("retrieve_prompt_builder.prompt", "text_embedder.text")
80
+ pipe.connect("text_embedder", "embedding_retriever")
81
+ pipe.connect("embedding_retriever.documents", "prompt_builder.documents")
82
  pipe.connect("prompt_builder", "llm")
83
  pipe.connect("llm.replies", "parser.replies")
requirements.txt CHANGED
@@ -5,4 +5,5 @@ haystack-ai
5
  google-ai-haystack
6
  accelerate
7
  pytz
8
- json_repair
 
 
5
  google-ai-haystack
6
  accelerate
7
  pytz
8
+ json_repair
9
+ astra-haystack