微信扫码
与创始人交个朋友
我要投稿
在学习大模型应用开发的过程中,我们常常需要整理和记录大量的代码和概念。为了提高效率,我开发了一个应用,能够自动解析我写的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-12-21
用LangChain教AI模仿你的写作风格:详细教程
2024-12-18
一站式 LLM 工程观测平台:Langfuse,让所有操作可观测
2024-12-17
LLMs开发者必看!Pydantic AI代理框架震撼登场!
2024-12-16
用LangChain实现一个Agent
2024-12-16
通过阿里云 Milvus 和 LangChain 快速构建 LLM 问答系统
2024-12-16
大模型部署调用(vLLM+LangChain)
2024-12-14
利用 LangGraph 和代理优化工作流程效率:关键功能、用例和集成...
2024-12-09
深度丨LangChain团队基于Agents用户体验设计的研究
2024-04-08
2024-08-18
2024-06-03
2024-10-10
2024-04-08
2024-04-17
2024-06-24
2024-04-11
2024-07-13
2024-04-12
2024-12-02
2024-11-25
2024-10-30
2024-10-11
2024-08-18
2024-08-16
2024-08-04
2024-07-29