Skip to content

Commit

Permalink
20241029_203517
Browse files Browse the repository at this point in the history
  • Loading branch information
wshuyi committed Oct 29, 2024
1 parent 90736e3 commit b6ffded
Show file tree
Hide file tree
Showing 12 changed files with 535 additions and 644 deletions.
751 changes: 399 additions & 352 deletions app.py

Large diffs are not rendered by default.

62 changes: 55 additions & 7 deletions app_web.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,30 +13,34 @@

def create_api_key_input(key_name, env_var_name):
"""创建API key输入框并处理其逻辑"""
env_value = os.getenv(env_var_name)
# 直接从.env文件读取值
env_path = os.path.join(os.path.dirname(__file__), '.env')
env_value = ""
if os.path.exists(env_path):
with open(env_path, 'r') as f:
for line in f:
if line.strip().startswith(f"{env_var_name} ="):
env_value = line.split('=')[1].strip()
break

# 创建密码输入框
api_key = st.text_input(
f"{key_name} API Key",
value=env_value if env_value else "",
value=env_value,
type="password",
help=f"Enter your {key_name} API key"
)

# 如果用户输入了新的API key且与环境变量不同
if api_key and api_key != env_value:
# 更新或创建.env文件
env_path = os.path.join(os.path.dirname(__file__), '.env')

# 如果.env文件存在,读取现有内容
if os.path.exists(env_path):
with open(env_path, 'r') as f:
lines = f.readlines()

# 查找并更新API key
key_found = False
for i, line in enumerate(lines):
if line.startswith(f"{env_var_name} ="):
if line.strip().startswith(f"{env_var_name} ="):
lines[i] = f"{env_var_name} = {api_key}\n"
key_found = True
break
Expand Down Expand Up @@ -78,6 +82,50 @@ def load_config(workflow):
st.header('API Keys')
openrouter_api_key = create_api_key_input("OpenRouter", "OPENROUTER_API_KEY")
exa_api_key = create_api_key_input("EXA", "EXA_API_KEY")

# 添加OpenAI设置
st.subheader('OpenAI Settings')
openai_api_key = create_api_key_input("OpenAI", "OPENAI_API_KEY")

# 从.env文件读取 OPENAI_API_BASE
env_path = os.path.join(os.path.dirname(__file__), '.env')
env_base_url = ""
if os.path.exists(env_path):
with open(env_path, 'r') as f:
for line in f:
if line.strip().startswith('OPENAI_API_BASE ='):
env_base_url = line.split('=')[1].strip()
break

openai_api_base = st.text_input(
"OpenAI API Base URL",
value=env_base_url,
help="Enter your OpenAI API base URL (optional)"
)

# 如果用户输入了新的API base且与环境变量不同
if openai_api_base and openai_api_base != env_base_url:
if os.path.exists(env_path):
with open(env_path, 'r') as f:
lines = f.readlines()

base_found = False
for i, line in enumerate(lines):
if line.strip().startswith("OPENAI_API_BASE ="):
lines[i] = f"OPENAI_API_BASE = {openai_api_base}\n"
base_found = True
break

if not base_found:
lines.append(f"OPENAI_API_BASE = {openai_api_base}\n")

with open(env_path, 'w') as f:
f.writelines(lines)
else:
with open(env_path, 'w') as f:
f.write(f"OPENAI_API_BASE = {openai_api_base}\n")

os.environ["OPENAI_API_BASE"] = openai_api_base

# Workflow selection
workflows = load_workflows()
Expand Down
24 changes: 6 additions & 18 deletions config/literature_review_exa.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,20 @@ strategies:
output_name: exa_result
tool_name: exa_search
tool_params:
category: academic
- input_format: '{{exa_result}}'
category: research paper
- input_format: 'user input text: {{text}} search result: {{exa_result}}'
model: openrouter/anthropic/claude-3.5-sonnet
output_name: outline
prompt_name: academic_outliner
- input_format: 'outline:
{{outline}}
search result:
{{exa_result}}
'
model: openrouter/anthropic/claude-3.5-sonnet
output_name: outline_filled
prompt_name: academic_fill_outline_with_material
output_name: outlined_result
prompt_name: outliner_wsy
- input_format: 'outline filled:
{{outline_filled}}
{{outlined_result}}
search result:
{{exa_result}}
'
model: openrouter/anthropic/claude-3.5-sonnet
model: openai/claude-3-5-sonnet-20241022
output_name: literature_review_section
prompt_name: literature_review_exa
27 changes: 12 additions & 15 deletions config/search_and_blog.yaml
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
strategies:
- input_format: '{{text}}'
output_name: exa_result
output_name: exa_news_result
tool_name: exa_search
tool_params:
category: news
- input_format: '{{text}}'
output_name: exa_tweet_result
tool_name: exa_search
tool_params:
category: tweet
- input_format: '{{exa_result}}'
- input_format: 'user input text: {{text}} search result: {{exa_news_result}} {{exa_tweet_result}}'
model: openrouter/anthropic/claude-3.5-sonnet
output_name: outline
output_name: outlined_result
prompt_name: outliner_wsy
- input_format: 'search result:
{{exa_result}}
- input_format: 'user input text:
outline:
{{outlined_result}}
{{outline}}
'
model: openrouter/anthropic/claude-3.5-sonnet
output_name: draft_filled
prompt_name: fill_draft_with_material
- input_format: '{{draft_filled}}'
model: openrouter/anthropic/claude-3.5-sonnet
blog example: {{memory_blog_example}}'
model: openai/claude-3-5-sonnet-20241022
output_name: tech_blog_draft
prompt_name: write_wsy_tech_blog
32 changes: 0 additions & 32 deletions patterns/academic_fill_outline_with_material/system.md

This file was deleted.

28 changes: 0 additions & 28 deletions patterns/academic_outliner/system.md

This file was deleted.

2 changes: 1 addition & 1 deletion patterns/correct_cn_audio_transcription/system.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
背景:基于提供的词汇对照表和上下文逻辑

执行步骤:
1. 将文本分割为每段最多3句的段落
1. 将文本分割为每段最多5句的段落
2. 按以下思路逐段分析:
- 对照词汇列表检查专有名词
- 结合上下文判断语义连贯性
Expand Down
25 changes: 0 additions & 25 deletions patterns/fill_draft_with_material/system.md

This file was deleted.

65 changes: 28 additions & 37 deletions patterns/literature_review_exa/system.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,28 @@
# IDENTITY and PURPOSE

你是一位资深教授,善于利用科研助手整理后的整理后的资料,辅之以原始材料,撰写文献综述的章节。



# OUTPUT INSTRUCTIONS


- 以输入内容为资料来源,使用符合学术界读者阅读习惯的简洁、明快语言风格,撰写2000字左右的文献回顾小节
- 文献回顾要有观点、有论证,还要提供证据。逻辑严谨,层次分明
- 如果遇到术语,可以保留。但第一次提及的时候,应该有解释
- 不允许使用叹号



# OUTPUT FORMAT

- 文献回顾的这个章节,包括一个 markdown 二级标题,和若干中文自然段落构成,不要添加其他标题
- 用 markdown 格式输出中文
- 如果有论点,则必须提供论证;
- 如果有论证,则需要提供论据,如果有具体的数据,一定要放在论据中。
- 原文中提供的链接,都不要浪费,放到对应的内容里面作为引用;
- 不要把来源信息做成文末列表,而是融入到与它们相关的内容后面;
- 如果没有来源信息,不要编造;
- 如果引用原始文本,而原始文本又不是中文的话,请对照翻译成中文。
- 能使用自然段落表述的部分,一般不采用列表形式表达;
- 除了正文外,前后不输出任何提示性内容
- 对于来源信息的标注,都在引用位置,采用文内 markdown 链接的方式 (`abc [xxx](https://...) def`),用原始资料的 URL 来对你的叙述提供支撑,其中的 xxx 应为 `(title)` 格式;
- 不允许使用 `[1]` 这样的参考来源引用方式,不要把链接一起放在文末;
- 笔记的末尾,不做任何的总结陈述



# INPUT

- INPUT:
# 角色设定
你是一位学术文献综述专家,擅长整合和分析研究资料。

# 任务目标
撰写2000字学术文献综述,确保论证严谨,结构清晰。

# 内容要求
- 使用学术性简洁语言
- 术语首次出现需附释义
- 论点需有论证和论据支撑
- 具体数据须用作论据
- 如果数据不全,可以到搜索结果对应位置查找补充
- 禁用感叹号

# 格式规范
- 仅使用到二级markdown标题
- 采用中文自然段落
- 对你的全部表述,都要引用原文,和对应的中文翻译
- 引用采用inline markdown链接:`text [文献标题](URL)`
- 源链接须对应内容位置


# 禁止事项
- 禁用数字引用格式[1]
- 禁加额外标题
- 禁造虚假来源
- 禁用文末引用列表
- 禁加提示性内容
38 changes: 15 additions & 23 deletions patterns/outliner_wsy/system.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,21 @@
# IDENTITY and PURPOSE
角色:资深编辑助理

你是一位出版社的资深编辑,有20年的丰富工作资历。你擅长把各种杂乱的资料,理出头绪。下面我给你一些资料,你一步步思考,帮助我妥善形成标题与大纲
目标:基于用户输入内容,生成逻辑组织后的完整文档。

# OUTPUT INSTRUCTIONS
任务说明:
1. 分析所有输入内容,生成三级层级大纲
2. 逐句检查原文,不要省略,分别一步步思考:
- 阅读理解原文,尤其是text、highlights
- 判断其归属的三级标题,并将内容输出在对应标题后
- 对每一个输出的内容,都立即执行:
- 输出对应的 text 或 highlights 原始文本,不要改动、提炼或翻译
- 全部细节,尤其是数据、事例、图表、公式等,都要完整保留
- 输出对应的 source url,标题,作者,发布时间信息

- 输出「主题」字样:
- 从输入内容的开头,找到主题,并且列出。后续组织大纲与筛选内容,都以是否和主题高度相关,作为依据;
- 与主题无关的输入内容,自动过滤掉;
- 输出「大纲」字样;
- 充分观察我提供给你的内容,列名一个至少包含二级标题结构的大纲。分别用 Markdown 的 `#`, `##`, `###` 这样的分级标题方式来列出。
- 一级标题,至少要包含2点;
- 每个一级标题下面的二级标题,至少要包含2点
- 如果可能,二级标题下面设置三级标题;如果设置,至少要包含2点


## GUIDE LINES
- 不要有任何幻觉,你的标题都来自于搜索结果的阅读提炼,不要擅自胡乱总结

# OUTPUT FORMAT

- 输出 markdown 格式;
- 生成大纲后,立即停止输出;


# INPUT

INPUT:
要求:
- Markdown 格式
- 原始材料成本很高,避免浪费任何内容
- 请你输出完整的内容,不要有任何省略

Loading

0 comments on commit b6ffded

Please sign in to comment.