精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

采用代碼聊天:理解代碼庫的對話式人工智能 原創(chuàng)

發(fā)布于 2024-8-22 08:19
瀏覽
0收藏

在不斷發(fā)展的軟件開發(fā)環(huán)境中,與代碼庫進(jìn)行對話式交互可以改變游戲規(guī)則。

想象一下,有一個工具可以理解你的代碼,可以回答你的問題,提供見解,甚至幫助你調(diào)試問題——所有這些都是通過自然語言查詢實(shí)現(xiàn)的。本文將引導(dǎo)你完成創(chuàng)建對話式人工智能的過程,該過程允許使用Chainlit、Qdrant和OpenAI與你的代碼進(jìn)行對話。

對話式人工智能對代碼庫的好處

  • 簡化代碼審查:快速審查特定的代碼模塊并了解其場景,而無需花費(fèi)更多的時間挖掘文件。
  • 高效調(diào)試:詢問代碼中潛在的問題,并獲得有針對性的響應(yīng),這有助于減少故障排除所花費(fèi)的時間。
  • 增強(qiáng)學(xué)習(xí): 新的團(tuán)隊(duì)成員可以了解代碼中不同組件的工作原理,而無需向現(xiàn)有的代碼專家學(xué)習(xí)。
  • 改進(jìn)文檔:使用人工智能進(jìn)行總結(jié)有助于生成復(fù)雜代碼的解釋,從而更容易增強(qiáng)文檔。

以下介紹是如何做到這一點(diǎn)的。

為交互準(zhǔn)備代碼庫

第一步是確保代碼庫已經(jīng)準(zhǔn)備好進(jìn)行交互。這可以通過將代碼向量化并將其存儲在向量數(shù)據(jù)庫中來實(shí)現(xiàn),從而有效地對其進(jìn)行審查。

Python

1 import openai
2 import yaml
3 import os
4 import uuid
5 from qdrant_client import QdrantClient, models
6
7 # Load configuration from config.yaml
8 with open("config.yaml", "r") as file:
9 config = yaml.safe_load(file)
10
11 # Extract API keys and URLs from the config
12 qdrant_cloud_url = config["qdrant"]["url"]
13 qdrant_api_key = config["qdrant"]["api_key"]
14 openai_api_key = config["openai"]["api_key"]
15 code_folder_path = config["folder"]["path"]
16
17 # Initialize OpenAI API
18
openai.api_key = openai_api_key
19
20 # Initialize Qdrant client
21 client = QdrantClient(
22 url=qdrant_cloud_url,
23 api_key=qdrant_api_key,
24 )
25
26 def chunk_code(code, chunk_size=512):
27 """
28 Splits the code into chunks, each of a specified size.
29 This helps in generating embeddings for manageable pieces of code.
30 """
31 lines = code.split('\n')
32 for i in range(0, len(lines), chunk_size):
33 yield '\n'.join(lines[i:i + chunk_size])
34
35 def vectorize_and_store_code(code, filename):
36 try:
37 # Chunk the code for better embedding representation
38 code_chunks = list(chunk_code(code))
39
40 # Generate embeddings for each chunk using the OpenAI API
41 embeddings = []
42 for chunk in code_chunks:
43 response = openai.embeddings.create(
44 input=[chunk], # Input should be a list of strings
45 model="text-embedding-ada-002"
46 )
47
48 # Access the embedding data correctly
49 embedding = response.data[0].embedding
50 embeddings.append(embedding)
51
52 # Flatten embeddings if needed or store each chunk as a separate entry
53 if len(embeddings) == 1:
54 final_embeddings = embeddings[0]
55 else:
56 final_embeddings = [item for sublist in embeddings for item in 
sublist]
57
58 # Ensure the collection exists
59 try:
60 client.create_collection(
61 collection_name="talk_to_your_code",
62 vectors_config=models.VectorParams(size=len(final_embeddings), 
distance=models.Distance.COSINE)
63 )
64 except Exception as e:
65 print("Collection already exists or other error:", e)
66
67 # Insert each chunk into the collection with relevant metadata
68 for i, embedding in enumerate(embeddings):
69 point_id = str(uuid.uuid4())
70 points = [
71 models.PointStruct(
72 id=point_id,
73 vector=embedding,
74 payload={
75 "filename": filename,
76 "chunk_index": i,
77 "total_chunks": len(embeddings),
78 "code_snippet": code_chunks[i]
79 }
80 )
81 ]
82 client.upsert(collection_name="talk_to_your_code", points=points)
83
84 return f"{filename}: Code vectorized and stored successfully."
85
86 except Exception as e:
87 return f"An error occurred with {filename}: {str(e)}"
88
89 def process_files_in_folder(folder_path):
90 for filename in os.listdir(folder_path):
91 if filename.endswith(".py"):
92 file_path = os.path.join(folder_path, filename)
93 with open(file_path, 'r', encoding='utf-8') as file:
94 code = file.read()
95 print(vectorize_and_store_code(code, filename))
96
97 if __name__ == "__main__":
98 process_files_in_folder(code_folder_path)
99

現(xiàn)在了解上述代碼值得注意的方面。

  • 加載代碼文件并將其分塊為可管理的部分。
  • 分塊是一個非常重要的環(huán)節(jié)。塊的大小不應(yīng)過小,以至于你想要了解的函數(shù)或模塊可以在多個塊中使用;也不應(yīng)該太大,以至于多個函數(shù)或模塊被壓縮到一個塊中;這兩種情況都會降低檢索質(zhì)量。
  • 使用OpenAI的text- embeddings -ada-002模型為每個塊生成嵌入。
  • 在Qdrant中處理和存儲嵌入以增強(qiáng)檢索。
  • 向代碼塊中添加元數(shù)據(jù)將有助于檢索特定的組件,并使代碼對話功能更加強(qiáng)大。
  • 為簡單起見,使用了一個文件夾路徑,其中放置了用于構(gòu)建這個對話模塊的兩個代碼文件。這個設(shè)置可以進(jìn)一步擴(kuò)展,以便指向GitHub上的URL。
  • 使用2個Python文件,即ragwithknowledgegraph.py和ragwithoutknowledgegraph.py用于生成代碼塊的嵌入向量,并將其存儲在矢量數(shù)據(jù)庫中,可以通過聊天界面對其進(jìn)行提問。

構(gòu)建對話界面

現(xiàn)在將設(shè)置一個Chainlit界面,該界面接受用戶輸入,查詢Qdrant,并返回關(guān)于代碼的場景相關(guān)信息。

Python

1 import chainlit as cl
2 import qdrant_client
3 import openai
4 import yaml
5 from langchain_openai import ChatOpenAI, OpenAIEmbeddings
6 from langchain.prompts import PromptTemplate
7
8 # Load configuration from config.yaml
9 with open("config.yaml", "r") as file:
10 config = yaml.safe_load(file)
11
12 # Extract API keys and URLs from the config
13 qdrant_cloud_url = config["qdrant"]["url"]
14 qdrant_api_key = config["qdrant"]["api_key"]
15 openai_api_key = config["openai"]["api_key"]
16
17 # Initialize OpenAI API
18 openai.api_key = openai_api_key
19
20 # Initialize OpenAI Embeddings
21 embeddings = OpenAIEmbeddings(model="text-embedding-ada-002", 
openai_api_key=openai_api_key)
22
23 # Initialize Qdrant client
24 client = qdrant_client.QdrantClient(
25 url=qdrant_cloud_url,
26 api_key=qdrant_api_key,
27 )
28
29 # Initialize OpenAI Chat model
30 chat_model = ChatOpenAI(openai_api_key=openai_api_key, model="gpt-4")
31
32 # Define a simple QA prompt template
33 qa_prompt_template = PromptTemplate(
34 input_variables=["context", "question"],
35 template="Given the following context:\n{context}\nAnswer the following 
question:\n{question}"
36 )
37
38 # Chainlit function to handle user input
39 @cl.on_message
40 async def handle_message(message: cl.message.Message):
41 try:
42 # Extract the actual text content from the message object
43 user_input = message.content
44
45 # Generate the query vector using OpenAI Embeddings
46 query_vector = embeddings.embed_query(user_input)
47
48 # Manually send the query to Qdrant
49 response = client.search(
50 collection_name="talk_to_your_code",
51 query_vector=query_vector,
52 limit=5
53 )
54
55 # Process and retrieve the relevant context (code snippets) from the 
Qdrant response
56 context_list = []
57 for point in response:
58 code_snippet = point.payload.get('code_snippet', '')
59 filename = point.payload.get('filename', 'Unknown')
60 context_list.append(f"Filename: {filename}\nCode 
Snippet:\n{code_snippet}\n")
61
62 context = "\n".join(context_list)
63 if not context:
64 context = "No matching documents found."
65
66 # Generate a response using the LLM with the retrieved context
67 prompt = qa_prompt_template.format(context=context, 
question=user_input)
68 response_text = chat_model.predict(prompt)
69
70 # Send the LLM's response
71 await cl.Message(content=response_text).send()
72
73 except Exception as e:
74 # Log the error
75 print(f"Error during message handling: {e}")
76 await cl.Message(content=f"An error occurred: {str(e)}").send()
77
78 if __name__ == "__main__":
79 cl.run()
80

上述代碼的重要方面包括:

  • 初始化Chainlit并配置其與OpenAI和Qdrant交互。
  • 為輸入生成查詢向量,以幫助從Qdrant檢索相關(guān)代碼片段。
  • 定義一個提示模板,將從Qdrant檢索到的場景與用戶的問題結(jié)合起來。
  • 將場景和問題提供給OpenAI的語言模型,并將生成的答案返回給用戶。
  • 需要注意的是,為了更好地理解,簡化了一些實(shí)現(xiàn)。

聊天界面的輸出

以下了解當(dāng)要求總結(jié)其中一個代碼文件時聊天界面生成的輸出。如上所述,將2個Python文件加載到vector db,并要求概述其中一個腳本。

這兩個腳本中,一個使用了知識圖譜來實(shí)現(xiàn)一個簡單的RAG(檢索增強(qiáng)生成)用例,而另一個則沒有使用。大型語言模型(LLM)以自然語言的方式很好地完成了對腳本的概述。

采用代碼聊天:理解代碼庫的對話式人工智能-AI.x社區(qū)

下一步驟

  • 通過整合額外的元數(shù)據(jù)來識別代碼的各個方面,從而改進(jìn)檢索。
  • 將聊天界面集成到GitHub URL中,并導(dǎo)入可用于提問的代碼庫。
  • 通過詢問具體和廣泛的問題來測試應(yīng)用程序,以了解應(yīng)用程序?qū)鼍暗睦斫獬潭取?/li>
  • 工程師使用各種不同的提示進(jìn)行提示和測試檢索。

結(jié)論

創(chuàng)建一個能夠理解你的代碼庫的對話式人工智能,將在開發(fā)過程中解鎖一個新的效率和洞察力水平。無論是在簡化代碼審查、加速調(diào)試,還是增強(qiáng)團(tuán)隊(duì)協(xié)作,這種方法都提供了巨大的價值。通過這種簡單的方法,可以改變與代碼交互的方式。

原文標(biāo)題:Chat With Your Code: Conversational AI That Understands Your Codebase,作者:Prince Bose,Tharakarama Reddy Yernapalli Sreenivasulu,Pavan Vemuri

鏈接:https://dzone.com/articles/conversational-ai-that-understands-your-codebase。

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任
已于2024-8-22 08:20:25修改
收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦
欧美va在线观看| 亚州视频一区二区三区| 欧美/亚洲一区| 亚洲福利在线视频| 日韩欧美黄色大片| 91精选在线| 91啦中文在线观看| 成人av在线亚洲| 欧美三日本三级少妇99| 第九色区aⅴ天堂久久香| 精品久久国产字幕高潮| 日本男人操女人| 欧美黑人猛交| 国产精品女人毛片| 精品国产一区二区三区四区vr | 免费在线观看成年人视频| 不卡亚洲精品| 欧美日韩国产精品一区| 最新精品视频| 成人网视频在线观看| 成人污污视频在线观看| 国产欧美一区二区白浆黑人| 国产手机在线视频| 在线成人直播| 中文字幕日韩综合av| 中国极品少妇videossexhd| 国产精品无码久久久久| 日韩欧美精品免费在线| www.男人天堂网| 亚洲s色大片| 久久久国产综合精品女国产盗摄| 99一区二区三区| 91资源在线视频| 日韩和的一区二区| 欧美综合第一页| 日韩福利片在线观看| 亚洲欧洲日韩| www高清在线视频日韩欧美| 美女脱光内衣内裤| 丝袜美腿综合| 亚洲国产另类久久精品 | 不卡区在线中文字幕| 亚洲综合精品一区二区| 一级黄色片网站| 日韩av一区二区在线影视| 97精品视频在线| 免费三片在线播放| 你懂的国产精品永久在线| 日韩在线观看高清| 91麻豆精品久久毛片一级| 国产探花在线精品| 亚洲石原莉奈一区二区在线观看| 亚洲av无码一区二区三区网址| 日韩视频在线直播| 日韩三级精品电影久久久| 欧美精品 - 色网| 91成人在线网站| 7878成人国产在线观看| 日韩在线一区视频| 二区三区精品| 日韩欧美中文一区二区| 四虎成人在线播放| 日本少妇精品亚洲第一区| 欧美一区二区精美| 亚洲美女高潮久久久| 成人在线视频你懂的| 亚洲福利在线看| a毛片毛片av永久免费| 最新亚洲精品| 中文字幕亚洲欧美日韩2019| 国精品人伦一区二区三区蜜桃| 久久中文视频| 九九热精品在线| 国产亚洲小视频| 免费亚洲一区| 国产欧美精品日韩| 国产91视频在线| 成人激情午夜影院| 久热国产精品视频一区二区三区| 欧美在线一卡| 国产精品久久久久久久久免费相片 | 欧美日韩性在线观看| 在线观看国产成人av片| 久草手机视频在线观看| 精品动漫3d一区二区三区免费版 | 国产精品6666| 久久久久99| 成人性生交xxxxx网站| 成人爽a毛片一区二区| 91美女在线视频| 亚洲精品高清视频| а_天堂中文在线| 欧美在线色视频| 韩国三级与黑人| 嫩草一区二区三区| 欧美成人激情视频免费观看| 日本五十熟hd丰满| 蜜桃视频一区二区三区| 国产精品18毛片一区二区| 日本韩国一区| 一区二区三区欧美日韩| 国内外成人免费激情视频| 日韩大陆av| 日韩精品久久久久| 久久久久久久久久久久久女过产乱| 亚洲欧洲另类| 91在线高清免费观看| 少妇av在线播放| 亚洲色图20p| 国产a级片免费观看| 亚洲精品高潮| 日韩在线小视频| 日本中文在线播放| 国产一区二区三区久久悠悠色av| 免费av在线一区二区| 色呦呦在线资源| 欧美日韩午夜在线| 色欲av无码一区二区三区| 激情婷婷亚洲| 成人免费自拍视频| 国产片在线观看| 欧美视频国产精品| 亚洲av无码一区东京热久久| 久久精品国内一区二区三区水蜜桃 | 欧美精品一级片| 麻豆精品久久精品色综合| 久久精品中文字幕一区二区三区 | 成a人片在线观看| 91久久线看在观草草青青| 中文字幕天堂av| 午夜精品久久| 5g国产欧美日韩视频| 91caoporm在线视频| 色综合天天做天天爱| www.啪啪.com| 国产一区美女| 97免费资源站| 大地资源网3页在线观看| 欧美揉bbbbb揉bbbbb| 无码人妻aⅴ一区二区三区69岛| 亚洲婷婷在线| 成人欧美一区二区三区视频xxx| 伦xxxx在线| 欧美丰满美乳xxx高潮www| 大胸美女被爆操| 热久久久久久久| 日韩高清dvd| 日韩欧美精品一区二区综合视频| 亚洲欧美一区二区三区四区 | 美国一级黄色录像| 日韩av不卡一区二区| 亚洲成人18| 欧美视频在线视频精品| 色av中文字幕一区| 国产尤物视频在线观看| 亚洲丝袜美腿综合| 国产在线视频三区| 黄色av成人| 精品日本一区二区三区| 中文在线最新版地址| 亚洲欧美国产一本综合首页| 国产真人无遮挡作爱免费视频| 久久免费午夜影院| 啊啊啊国产视频| 91亚洲自偷观看高清| 成人免费福利视频| 日本大胆在线观看| 亚洲国产婷婷香蕉久久久久久| 成人午夜视频精品一区| 久久精品亚洲乱码伦伦中文| 亚洲天堂av线| 午夜精品剧场| 精品一区二区国产| 国产综合色区在线观看| 久久精品亚洲热| 懂色av蜜臀av粉嫩av分享吧| 欧美视频在线看| 萌白酱视频在线| 不卡高清视频专区| 老熟妇仑乱视频一区二区 | 久久久精品欧美| 亚洲高清精品视频| 欧洲激情一区二区| 亚洲国产精品免费在线观看| 成人禁用看黄a在线| 日本男人操女人| 欧美韩日精品| 欧美日韩高清在线一区| 精品视频国内| 欧美中文字幕在线播放| 自拍视频在线网| 亚洲国产古装精品网站| 无码人妻丰满熟妇精品区| 亚洲人成伊人成综合网小说| 亚洲综合自拍网| 久久精品久久久精品美女| 日本一二三区视频在线| 日韩欧美天堂| 91久久精品国产91久久性色tv| 夜鲁夜鲁夜鲁视频在线播放| 久久精品成人欧美大片古装| 视频污在线观看| 欧美二区三区的天堂| 国产午夜性春猛交ⅹxxx| 亚洲人xxxx| 国产免费无遮挡吸奶头视频| 国产成人aaaa| 污污网站在线观看视频| 国产精品久久久一区二区| 日本福利视频导航| 国产精品亚洲片在线播放| 成人免费看片网址| 韩国理伦片久久电影网| 91sa在线看| 日本动漫理论片在线观看网站| 中文字幕av一区二区三区谷原希美| 色丁香婷婷综合久久| 欧美一级免费大片| 中文字幕一区二区久久人妻| 精品福利一区二区| 青青草手机在线观看| 中文字幕在线不卡一区| 91网站免费视频| 99re这里都是精品| 黑人玩弄人妻一区二区三区| 精品一区二区免费视频| 亚洲一区二区三区四区五区xx| 在线一区欧美| 国产精品久久久久久久乖乖| 亚洲精品久久久| 中文字幕日韩一区二区三区不卡| 精品产国自在拍| 日本成人看片网址| 九九热爱视频精品视频| 精品乱子伦一区二区三区| 91麻豆精品激情在线观看最新| 成人福利网站在线观看11| 国产成人久久精品麻豆二区| 日韩美女视频中文字幕| 中文字幕乱码中文乱码51精品| 97精品在线观看| 爱搞国产精品| 97成人精品区在线播放| 欧美激情护士| 日本高清+成人网在线观看| 天堂电影一区| 日本韩国在线不卡| 日本欧美日韩| 国产精品福利在线观看| 欧洲成人一区| 国产日韩在线看| 中文幕av一区二区三区佐山爱| 国产欧美在线视频| 999精品嫩草久久久久久99| 91久久久久久| 9l视频自拍蝌蚪9l视频成人| av一区二区三区免费| 欧美成人精品一级| 国产原创精品| 女人av一区| 亚洲欧美丝袜| 女人色偷偷aa久久天堂| 91九色丨porny丨国产jk| 99精品视频免费全部在线| 日韩欧美视频网站| 日日夜夜一区二区| 国产原创精品在线| 国产成人综合亚洲网站| 亚洲精品第二页| 久久综合丝袜日本网| 欧美熟妇激情一区二区三区| 国产精品久久久久久久久免费樱桃 | 成人网18免费网站| 欧美 日韩 国产 在线观看| 欧美一区综合| 日韩av高清在线看片| 日精品一区二区三区| 国产无遮挡猛进猛出免费软件| 国产精品一级二级三级| 性久久久久久久久久久| 国产三级欧美三级| 国产在线一卡二卡| 欧美日韩国产精品专区| 中文字幕免费播放| 精品国产伦一区二区三区观看方式 | 国产福利精品一区二区| 屁屁影院国产第一页| 国产精品三级视频| 久久久久香蕉视频| 在线亚洲+欧美+日本专区| 国产精品免费无遮挡| 亚洲精品国产精品乱码不99按摩 | 亚洲精品高清在线观看| 天天操天天操天天操天天| 欧美人妇做爰xxxⅹ性高电影| 刘亦菲久久免费一区二区| 在线一区二区日韩| www.综合网.com| 国产精品丝袜视频| 久久97精品| 中国老女人av| 日本aⅴ亚洲精品中文乱码| 午夜av免费看| 亚洲精品一卡二卡| 国模私拍一区二区| 亚洲国产另类久久精品| a视频在线免费看| 国产精品久久久久久久app| eeuss鲁片一区二区三区| 亚洲一区二区三区免费看| 国产欧美一区二区三区国产幕精品| 天堂av2020| 国产三区在线成人av| 日韩在线观看第一页| 日韩精品一区二区三区四区视频 | 蜜桃精品噜噜噜成人av| 菠萝蜜视频在线观看入口| 美女一区二区三区在线观看| 欧洲一级黄色片| 亚洲综合偷拍欧美一区色| 一二三区中文字幕| 国产亚洲aⅴaaaaaa毛片| 成人国产电影在线观看| 97人人澡人人爽| 99久久婷婷| 中文字幕 91| 国产视频一区二区在线观看| 日韩 欧美 综合| 精品av久久707| 午夜影院免费在线| 91老司机精品视频| 国产精品伦理久久久久久| 亚洲黄色av网址| 中文字幕欧美日韩一区| 日韩美一区二区| 亚洲美女动态图120秒| 日本蜜桃在线观看视频| 国产精品一区二区三区在线观 | 免费国产自久久久久三四区久久| 国产精品一线二线三线| 盗摄精品av一区二区三区| 久久久精品国产sm调教| 欧美videos大乳护士334| 视频在线观看入口黄最新永久免费国产 | 国产精品亚洲四区在线观看 | 亚洲91av| 99热在线播放| 亚洲激情偷拍| 国产夫妻性爱视频| 高跟丝袜欧美一区| 欧美日韩在线精品一区二区三区激情综| 69视频在线播放| 亚洲尤物av| 国产主播中文字幕| 国产精品国产三级国产a| 国产影视一区二区| 精品中文字幕视频| 成人爽a毛片| www.爱色av.com| 国产女主播一区| 国产精品色综合| 欧美片一区二区三区| 国产图片一区| 久久综合久久色| 自拍av一区二区三区| 精品人妻伦一区二区三区久久| 欧美激情按摩在线| 欧美一性一交| 三级在线免费看| 亚洲激情欧美激情| 亚洲三级中文字幕| 国产精品久久久久国产a级| 欧美大片专区| 91视频啊啊啊| 欧美日韩久久一区| 成人av影院在线观看| 欧美精品一区在线| 精品在线播放午夜| 国产大片aaa| 亚洲色在线视频| 亚洲国产精品免费视频| 人妻久久久一区二区三区| 日本一区二区三区在线不卡| 国产深喉视频一区二区| 97在线视频国产| 色综合咪咪久久网| 扒开伸进免费视频| 在线观看视频一区二区欧美日韩| 老司机av在线免费看| 精品久久久久久中文字幕动漫| 麻豆一区二区99久久久久| 久久久久久久久97| 国产一区二区三区四区福利| 视频亚洲一区二区| 黄色片在线免费| 亚洲高清三级视频| 日本在线播放| 免费试看一区| 国产91高潮流白浆在线麻豆 | 精品久久99ma|