今日开发目标
- 基础环境设置
- 链接notion数据和OpenAI交互
Notion开发环境设置
- NotionAPI集成设置 打开https://www.notion.so/my-integrations,点击New integration,进入下一步
设置基础的信息,类型,名字,logo。
名字让ChatGPT优化了一下,logo是用PS简单合成了一下,设计理念很简单,就是Notion的logo后面有一个S的图标,暗示StarupAI是依附于Notion的。
- 设置Notion链接的数据库 我已经在Notion上复制了一个公司通用模版,初期用用还行就先凑合,做了汉化处理,点击右上角的三个点“···”,再点击Add connections最后搜索Notion API设置中设置的集成名字
Notion的开发环境就已经配置好
OpenAI的开发环境配置
不知道怎么开通OpenAI API的看我另一个教程:保姆级开通OpenAI API和ChatGPT Plus教程(macOS版)
- 登陆OpenAI官网,点击API。
- 右上角点击头像,再点击view API keys
- 最后 创建新的API用于开发
基础的环境已经搭建好,可以进入到VS Code正式开发应用
VS Code编写交互代码
1.创建一个用于处理notion数据和 OpenAI交互的代码文件,这是最基础的交互代码
替换YOUR_NOTION_API_KEY和YOUR_DATABASE_ID
YOUR_DATABASE_ID是notion的公开页面里的部分例如:https://hyhai.notion.site/HYH-0ba1beade5cb4c8ab9920336f03683a4?pvs=25
ID就是:0ba1beade5cb4c8ab9920336f03683a4
import requests # Notion API配置 NOTION_API_KEY = "YOUR_NOTION_API_KEY" NOTION_DATABASE_ID = "YOUR_DATABASE_ID" NOTION_HEADERS = { "Authorization": f"Bearer {NOTION_API_KEY}", "Notion-Version": "2021-08-16", "Content-Type": "application/json" } # 从Notion数据库获取数据 response = requests.post(f"https://api.notion.com/v1/databases/{NOTION_DATABASE_ID}/query", headers=NOTION_HEADERS) notion_data = response.json() # 使用OpenAI处理数据(此处为简化示例,您需要根据实际需求进行处理) # ...
2.给交互文件增加OpenAI模型的角色设定:知识库助手,客户管理助手,项目管理助手
利用ChatGPT开发到这,但是notion打印出来的数据存在结构和格式问题,又不断在尝试修改代码,碍于篇幅,就不过多叙述了。
import requests # Notion API配置 NOTION_API_KEY = "YOUR_NOTION_API_KEY" NOTION_DATABASE_ID = "YOUR_DATABASE_ID" NOTION_HEADERS = { "Authorization": f"Bearer {NOTION_API_KEY}", "Notion-Version": "2021-08-16", "Content-Type": "application/json" } # OpenAI API配置 OPENAI_API_KEY = "YOUR_OPENAI_API_KEY" OPENAI_HEADERS = { "Authorization": f"Bearer {OPENAI_API_KEY}", "Content-Type": "application/json" } # 从Notion数据库获取数据 response = requests.post(f"https://api.notion.com/v1/databases/{NOTION_DATABASE_ID}/query", headers=NOTION_HEADERS) notion_data = response.json() # 根据角色处理数据 def process_data_as_role(data, role): prompt = "" if role == "knowledge_assistant": prompt = f"Act as a knowledge assistant and provide insights on: {data}" elif role == "customer_management_assistant": prompt = f"Act as a customer management assistant and provide recommendations on: {data}" elif role == "project_management_assistant": prompt = f"Act as a project management assistant and provide guidance on: {data}" response = requests.post("https://api.openai.com/v1/engines/davinci/completions", headers=OPENAI_HEADERS, json={ "prompt": prompt, "max_tokens": 150 }) return response.json()["choices"][0]["text"].strip() # 示例:使用OpenAI模型处理数据 knowledge_response = process_data_as_role(notion_data, "knowledge_assistant") customer_management_response = process_data_as_role(notion_data, "customer_management_assistant") project_management_response = process_data_as_role(notion_data, "project_management_assistant") print("Knowledge Assistant Response:", knowledge_response) print("Customer Management Assistant Response:", customer_management_response) print("Project Management Assistant Response:", project_management_response)