sonoisa commited on
Commit
2cf1d5f
·
verified ·
1 Parent(s): 346ff58

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +89 -51
index.html CHANGED
@@ -211,6 +211,16 @@ def extract_pages_from_page_tag(document_with_page_tag):
211
 
212
 
213
  def add_s(values):
 
 
 
 
 
 
 
 
 
 
214
  return "s" if len(values) > 1 else ""
215
 
216
 
@@ -256,7 +266,6 @@ def count_characters(document_with_tag):
256
  Returns:
257
  str: 文字数とトークン数の情報を含む文字列
258
  """
259
-
260
  text = "".join([page.content for page in extract_pages_from_page_tag(document_with_tag)])
261
 
262
  tokens = OPENAI_TOKENIZER.encode(text)
@@ -264,6 +273,9 @@ def count_characters(document_with_tag):
264
 
265
 
266
  class SearchEngine:
 
 
 
267
  def __init__(self, engine, pages):
268
  self.engine = engine
269
  self.pages = pages
@@ -272,6 +284,12 @@ class SearchEngine:
272
  SEARCH_ENGINE = None
273
 
274
  def create_search_engine(context):
 
 
 
 
 
 
275
  global SEARCH_ENGINE
276
 
277
  pages = extract_pages_from_page_tag(context)
@@ -293,6 +311,16 @@ def create_search_engine(context):
293
 
294
 
295
  def search_pages(keywords, page_limit):
 
 
 
 
 
 
 
 
 
 
296
  global SEARCH_ENGINE
297
  if SEARCH_ENGINE is None:
298
  return []
@@ -306,6 +334,15 @@ def search_pages(keywords, page_limit):
306
 
307
 
308
  def load_pages(page_numbers):
 
 
 
 
 
 
 
 
 
309
  global SEARCH_ENGINE
310
  if SEARCH_ENGINE is None:
311
  return []
@@ -315,6 +352,55 @@ def load_pages(page_numbers):
315
  return found_pages
316
 
317
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
318
  async def process_prompt(prompt, history, context, platform, endpoint, azure_deployment, azure_api_version, api_key, model_name, max_tokens, temperature):
319
  """
320
  ユーザーのプロンプトを処理し、ChatGPTによる生成結果を返す。
@@ -340,54 +426,6 @@ async def process_prompt(prompt, history, context, platform, endpoint, azure_dep
340
  if pages:
341
  context = "".join([page.content for page in pages])
342
 
343
- tools = [
344
- # ページ検索
345
- {
346
- "type": "function",
347
- "function": {
348
- "name": "search_pages",
349
- "description": "与えられたキーワードを含むページを検索します。",
350
- "parameters": {
351
- "type": "object",
352
- "properties": {
353
- "keywords": {
354
- "type": "string",
355
- "description": "半角空白区切りの複数の検索キーワード, 例: Artificial General Intelligence 自律エージェント"
356
- },
357
- "page_limit": {
358
- "type": "number",
359
- "description": "検索するページ数, 例: 3",
360
- "minimum": 1
361
- }
362
- }
363
- },
364
- "required": ["keywords"]
365
- }
366
- },
367
- # ページ取得
368
- {
369
- "type": "function",
370
- "function": {
371
- "name": "load_pages",
372
- "description": "与えられたページ番号のページを取得します。",
373
- "parameters": {
374
- "type": "object",
375
- "properties": {
376
- "page_numbers": {
377
- "type": "array",
378
- "items": {
379
- "type": "number"
380
- },
381
- "minItems": 1,
382
- "description": "取得するページのページ番号のリスト"
383
- }
384
- }
385
- },
386
- "required": ["page_numbers"]
387
- }
388
- }
389
- ]
390
-
391
  try:
392
  messages = []
393
  for user_message, assistant_message in history:
@@ -419,7 +457,7 @@ async def process_prompt(prompt, history, context, platform, endpoint, azure_dep
419
  model=model_name,
420
  max_tokens=max_tokens,
421
  temperature=temperature,
422
- tools=tools,
423
  tool_choice="auto",
424
  stream=False
425
  )
@@ -603,7 +641,7 @@ def main():
603
  }
604
  }'''
605
 
606
- # プロンプト例
607
  examples = {
608
  "要約 (論文)": '''制約条件に従い、以下の研究論文で提案されている技術や手法について要約してください。
609
 
 
211
 
212
 
213
  def add_s(values):
214
+ """
215
+ 複数形のsを必要に応じて付けるために用いる関数。
216
+ 与えられたリストの要素数が2以上なら"s"を返し、それ以外は""を返す。
217
+
218
+ Args:
219
+ values (list[any]): リスト
220
+
221
+ Returns:
222
+ str: 要素数が複数なら"s"、それ以外は""
223
+ """
224
  return "s" if len(values) > 1 else ""
225
 
226
 
 
266
  Returns:
267
  str: 文字数とトークン数の情報を含む文字列
268
  """
 
269
  text = "".join([page.content for page in extract_pages_from_page_tag(document_with_tag)])
270
 
271
  tokens = OPENAI_TOKENIZER.encode(text)
 
273
 
274
 
275
  class SearchEngine:
276
+ """
277
+ 検索エンジン
278
+ """
279
  def __init__(self, engine, pages):
280
  self.engine = engine
281
  self.pages = pages
 
284
  SEARCH_ENGINE = None
285
 
286
  def create_search_engine(context):
287
+ """
288
+ 検索エンジンを作る。
289
+
290
+ Args:
291
+ context (str): 検索対象となるテキスト。ただし、テキストはchatpdf:pageというタグでページが括られているとする。
292
+ """
293
  global SEARCH_ENGINE
294
 
295
  pages = extract_pages_from_page_tag(context)
 
311
 
312
 
313
  def search_pages(keywords, page_limit):
314
+ """
315
+ 与えられたキーワードを含むページを検索する。
316
+
317
+ Args:
318
+ keywords (str): 検索キーワード
319
+ page_limit (int): 検索するページ数
320
+
321
+ Returns:
322
+ list[Page]: ヒットしたページ
323
+ """
324
  global SEARCH_ENGINE
325
  if SEARCH_ENGINE is None:
326
  return []
 
334
 
335
 
336
  def load_pages(page_numbers):
337
+ """
338
+ 与えられたページ番号のページを取得する。
339
+
340
+ Args:
341
+ page_numbers (list[int]): 取得するページ番号
342
+
343
+ Returns:
344
+ list[Page]: 取得したページ
345
+ """
346
  global SEARCH_ENGINE
347
  if SEARCH_ENGINE is None:
348
  return []
 
352
  return found_pages
353
 
354
 
355
+ CHAT_TOOLS = [
356
+ # ページ検索
357
+ {
358
+ "type": "function",
359
+ "function": {
360
+ "name": "search_pages",
361
+ "description": "与えられたキーワードを含むページを検索します。",
362
+ "parameters": {
363
+ "type": "object",
364
+ "properties": {
365
+ "keywords": {
366
+ "type": "string",
367
+ "description": "半角空白区切りの複数の検索キーワード, 例: Artificial General Intelligence 自律エージェント"
368
+ },
369
+ "page_limit": {
370
+ "type": "number",
371
+ "description": "検索するページ数, 例: 3",
372
+ "minimum": 1
373
+ }
374
+ }
375
+ },
376
+ "required": ["keywords"]
377
+ }
378
+ },
379
+ # ページ取得
380
+ {
381
+ "type": "function",
382
+ "function": {
383
+ "name": "load_pages",
384
+ "description": "与えられたページ番号のページを取得します。",
385
+ "parameters": {
386
+ "type": "object",
387
+ "properties": {
388
+ "page_numbers": {
389
+ "type": "array",
390
+ "items": {
391
+ "type": "number"
392
+ },
393
+ "minItems": 1,
394
+ "description": "取得するページのページ番号のリスト"
395
+ }
396
+ }
397
+ },
398
+ "required": ["page_numbers"]
399
+ }
400
+ }
401
+ ]
402
+
403
+
404
  async def process_prompt(prompt, history, context, platform, endpoint, azure_deployment, azure_api_version, api_key, model_name, max_tokens, temperature):
405
  """
406
  ユーザーのプロンプトを処理し、ChatGPTによる生成結果を返す。
 
426
  if pages:
427
  context = "".join([page.content for page in pages])
428
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
429
  try:
430
  messages = []
431
  for user_message, assistant_message in history:
 
457
  model=model_name,
458
  max_tokens=max_tokens,
459
  temperature=temperature,
460
+ tools=CHAT_TOOLS,
461
  tool_choice="auto",
462
  stream=False
463
  )
 
641
  }
642
  }'''
643
 
644
+ # メッセージ例
645
  examples = {
646
  "要約 (論文)": '''制約条件に従い、以下の研究論文で提案されている技術や手法について要約してください。
647