微信扫码
与创始人交个朋友
我要投稿
在学习大模型应用开发的过程中,我们常常需要整理和记录大量的代码和概念。为了提高效率,我开发了一个应用,能够自动解析我写的demo代码,并生成一份详尽的笔记。这篇文章就是用这种方法生成的。
该应用的主要场景是帮助开发者快速整理和记录学习过程中的代码和概念。通过自动解析代码并生成笔记,可以大大提高学习效率。
import streamlit as st
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from utils.llms import LLMs
import os
st.title("技术文章创作空间")
st.write("欢迎来到技术文章创作空间,让我们一起将复杂的技术概念转化为引人入胜的文章。请提供你的技术背景描述和代码,我将为你撰写一篇精彩的公众号文章。")
background_description = st.text_area("请输入你的背景描述")
code_snippet = st.text_area("请输入你的代码")
def generate_outline(background, code):
system_prompt = PromptTemplate(
template="""
你是一位经验丰富的技术文章作家,擅长将复杂的技术概念以通俗易懂的方式表述出来,并且能够清晰地展示代码的创作过程。你的任务是根据用户提供的技术背景、思路和代码,撰写一篇公众号文章,使读者能够理解技术的应用场景和实现方法。
文章内容应包括:
1. 背景介绍
2. 概念解释
3. 思路解析
4. 代码实现解析
5. 总结
用户提供的技术背景:
{background}
用户提供的代码实现:
{code}
根据上述信息,请生成这篇文章的大纲,用markdown格式表示。
""",
input_variables=["background", "approach", "code"],
)
llm = LLMs(model_name="deepseek", temprature=0.1).get_llm()
outline_chain = LLMChain(prompt=system_prompt, llm=llm)
result = outline_chain.invoke({"background": background, "code": code})
outline = result["text"]
return outline
def generate_paragraph(background, code, outline, finished_paragraph=""):
if finished_paragraph == "":
system_prompt = PromptTemplate(
template="""
你是一位经验丰富的技术文章作家,擅长将复杂的技术概念以通俗易懂的方式表述出来,并且能够清晰地展示代码的创作过程。
## 文章大纲为:
{outline}
## 文章写作的背景:
{background}
根据上述信息,请完成大纲中第一部分的文章内容,不要包含其他部分内容。
请使用markdown格式输出。
""",
input_variables=["background", "approach", "code", "outline"],
)
else:
system_prompt = PromptTemplate(
template="""
你是一位经验丰富的技术文章作家,擅长将复杂的技术概念以通俗易懂的方式表述出来,并且能够清晰地展示代码的创作过程。你的任务是根据用户提供的技术背景、思路和代码,撰写一篇公众号文章,使读者能够理解技术的应用场景和实现方法。
## 文章大纲为:
{outline}
## 文章写作的背景:
{background}
```python
system_prompt = PromptTemplate(
template="""
你是一位经验丰富的技术文章作家,擅长将复杂的技术概念以通俗易懂的方式表述出来,并且能够清晰地展示代码的创作过程。
## 文章大纲为:
{outline}
## 文章写作的背景:
{background}
根据上述信息,请完成大纲中第一部分的文章内容,不要包含其他部分内容。
请使用markdown格式输出。
""",
input_variables=["background", "approach", "code", "outline"],
)
llm = LLMs(model_name="deepseek", temprature=0.1).get_llm()
paragraph_chain = LLMChain(prompt=system_prompt, llm=llm)
result = paragraph_chain.invoke({"background": background, "code": code, "outline": outline})
paragraph = result["text"]
return paragraph
def save_article(article):
with open("generated_article.md", "w") as f:
f.write(article)
st.success("文章已保存到generated_article.md")
def main():
background_description = st.text_area("请输入你的背景描述")
code_snippet = st.text_area("请输入你的代码")
if st.button("生成文章"):
outline = generate_outline(background_description, code_snippet)
st.markdown("### 生成的文章大纲")
st.markdown(outline)
article = ""
for section in outline.split("\n"):
if section.strip():
article += generate_paragraph(background_description, code_snippet, section)
st.markdown("### 生成的文章内容")
st.markdown(article)
save_article(article)
if __name__ == "__main__":
main()
通过这个应用,我们可以快速地将复杂的技术概念和代码转化为通俗易懂的文章。这不仅提高了学习效率,还使得技术分享变得更加便捷。希望这个应用能帮助更多的开发者更好地理解和应用大模型技术。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-13
只需8步,手把手教你用LangGraph创建AI智能体
2024-11-13
使用 LangChain 建立一个会话式的 RAG Agent 系统
2024-11-12
一文深度了解Agent智能体以及认知架构
2024-11-12
使用LangChain建立检索增强生成(RAG)系统
2024-11-11
Qwen-Agent 核心点说明
2024-11-11
吴恩达分享五个AI趋势,重点谈了多AI代理的美好前景
2024-11-11
使用 LangChain 构建一个 Agent(智能体/代理)
2024-11-10
使用 LangChain 构建一个有记忆的聊天机器人
2024-08-18
2024-04-08
2024-06-03
2024-04-08
2024-04-17
2024-06-24
2024-04-12
2024-04-10
2024-07-01
2024-04-11
2024-10-30
2024-10-11
2024-08-18
2024-08-16
2024-08-04
2024-07-29
2024-07-28
2024-07-27