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

采用代碼聊天:理解代碼庫的對話式人工智能

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

譯者 | 李睿

審校 | 重樓

在不斷發展的軟件開發環境中,與代碼庫進行對話式交互可以改變游戲規則。

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

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

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

以下介紹是如何做到這一點的。

為交互準備代碼庫

第一步是確保代碼庫已經準備好進行交互。這可以通過將代碼向量化并將其存儲在向量數據庫中來實現,從而有效地對其進行審查。

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

現在了解上述代碼值得注意的方面。

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

構建對話界面

現在將設置一個Chainlit界面,該界面接受用戶輸入,查詢Qdrant,并返回關于代碼的場景相關信息。

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檢索相關代碼片段。
  • 定義一個提示模板,將從Qdrant檢索到的場景與用戶的問題結合起來。
  • 將場景和問題提供給OpenAI的語言模型,并將生成的答案返回給用戶。
  • 需要注意的是,為了更好地理解,簡化了一些實現。

聊天界面的輸出

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

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

下一步驟

  • 通過整合額外的元數據來識別代碼的各個方面,從而改進檢索。
  • 將聊天界面集成到GitHub URL中,并導入可用于提問的代碼庫。
  • 通過詢問具體和廣泛的問題來測試應用程序,以了解應用程序對場景的理解程度。
  • 工程師使用各種不同的提示進行提示和測試檢索。

結論

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

原文標題: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。

責任編輯:姜華 來源: 51CTO內容精選
相關推薦

2024-04-18 16:12:10

2021-10-08 10:57:19

對話式人工智能關鍵服務人工智能

2023-06-30 10:42:00

2023-12-05 14:31:17

人工智能

2023-05-05 14:59:44

2023-05-05 14:02:59

人工智能聊天機器人

2016-09-24 22:49:31

2022-02-25 15:59:20

人工智能

2022-11-11 10:07:38

人工智能開源

2023-08-25 10:52:04

2021-03-08 08:00:00

人工智能機器人醫療

2025-06-27 03:00:00

2022-05-23 15:56:40

人工智能機器人自然語言

2020-02-10 20:16:04

程序員AI人工智能

2023-05-26 13:57:06

人工智能AI

2019-09-12 15:03:44

2023-03-28 15:06:47

人工智能聊天機器人

2021-08-24 10:16:51

人工智能機器人工具

2024-01-05 07:44:22

人工智能用戶隱私AI

2023-05-11 07:45:28

谷歌人工智能
點贊
收藏

51CTO技術棧公眾號

国产乱淫av片杨贵妃| 91精品在线观看视频| 成人精品在线观看视频| 欧美日韩尤物久久| 成人欧美一区二区三区黑人麻豆| av日韩中文字幕| 中文字幕超碰在线| 色综合狠狠操| 亚洲高清久久网| 免费涩涩18网站入口| 欧美三级电影一区二区三区| 国产91对白在线观看九色| 欧美一级淫片播放口| 日韩欧美国产成人精品免费| av成人综合| 欧美日韩视频专区在线播放| 欧美精品卡一卡二| 欧美a免费在线| 91视视频在线直接观看在线看网页在线看| 国产噜噜噜噜久久久久久久久| 国产亚洲精品女人久久久久久| 久久99国产精品视频| 精品少妇一区二区三区在线播放| 可以免费在线看黄的网站| 中文字幕伦理免费在线视频| 国产欧美综合色| 精品不卡在线| 国产福利小视频| 蜜桃精品视频在线观看| 午夜精品久久久99热福利| 日本成人精品视频| 亚洲专区视频| 精品国产乱码久久久久久牛牛| 亚洲这里只有精品| 色婷婷综合久久久中字幕精品久久| 亚洲综合免费观看高清完整版在线 | 日韩精品在线视频| 亚洲精品鲁一鲁一区二区三区| 免费成人高清在线视频| 一本到三区不卡视频| www.av毛片| 日本大片在线播放| 亚洲精品乱码久久久久久久久| 亚洲精品在线免费| 国产51人人成人人人人爽色哟哟| 91视频.com| 国产在线资源一区| 天天爱天天干天天操| 国产高清精品久久久久| 亚洲一区二区三区视频播放| 一本一道精品欧美中文字幕| 蜜臀av性久久久久蜜臀av麻豆| 国产va免费精品高清在线| av黄色在线看| 中文日韩欧美| 26uuu亚洲伊人春色| 国产大片aaa| 99亚洲精品| 欧美一区二区色| 亚洲熟妇无码乱子av电影| 国产一区二区三区久久| 456国产精品| 国产suv精品一区二区33| 国产精品久久久免费| 777午夜精品福利在线观看| 日本三级黄色大片| 亚洲午夜电影| 88xx成人精品| 波多野结衣网站| 裸体一区二区三区| 91精品在线看| 丰满肥臀噗嗤啊x99av| 99免费精品视频| 免费看污久久久| 国产中文在线观看| 国产精品福利一区二区三区| 日本xxx免费| 成人在线高清免费| 精品久久久免费| 国产免费又粗又猛又爽| 国产95亚洲| 亚洲国产精品系列| 三级网站在线免费观看| 欧美韩国日本在线观看 | 免费久久久一本精品久久区| 成全电影播放在线观看国语| 最新热久久免费视频| 久久艹国产精品| 成人天堂yy6080亚洲高清| 欧美日韩国产成人在线免费| 成人啪啪18免费游戏链接| 欧美黑人巨大videos精品| 亚洲深夜福利在线| 国内偷拍精品视频| 久久亚洲欧美| 国产精品日韩欧美一区二区| 国产三级在线观看| 一区二区理论电影在线观看| 免费黄色特级片| 精品一区二区三区中文字幕| 日韩精品视频免费在线观看| 欧美色图17p| 亚洲另类黄色| 91九色国产社区在线观看| 天堂中文在线资源| 亚洲欧美另类小说视频| 国产精品97在线| 日韩精品一区二区三区中文字幕 | aa成人免费视频| 一级日本在线| 欧美天堂在线观看| 成人啪啪18免费游戏链接| 欧美丝袜丝交足nylons172| 欧美极品美女视频网站在线观看免费| 亚洲 欧美 中文字幕| 国产精品77777| 婷婷五月色综合| 日本免费一区二区六区| 日韩欧美久久一区| 亚洲欧美卡通动漫| 奇米888四色在线精品| 国语精品免费视频| 欧美草逼视频| 欧美一区二区三区在线视频 | 亚洲一区二区视频在线| 精品久久久99| 欧美伦理在线视频| 欧美在线不卡区| 无码国精品一区二区免费蜜桃| 亚洲人妖av一区二区| 色www免费视频| 精品免费av| 国产成人精品优优av| 天天干在线观看| 亚洲国产日韩综合久久精品| 婷婷中文字幕在线观看| 久久人人99| 国产精品福利在线观看网址| 欧美少妇另类| 粉嫩av一区二区三区免费野| 东京热av一区| 在线观看一区| 国产欧美日韩在线播放| 久草在线资源站资源站| 精品国产露脸精彩对白| 激情小说中文字幕| 丁香天五香天堂综合| 国产911在线观看| 视频在线一区| 久久久免费高清电视剧观看| 亚洲va欧美va| 亚洲国产日韩一区二区| 日韩免费高清一区二区| 一区二区三区福利| 日本在线观看一区二区| 欧美韩国亚洲| www.日韩欧美| 精品国产av 无码一区二区三区| 亚洲色图制服诱惑| 国产精品一级无码| 黑丝一区二区| 久久久av水蜜桃| 欧美日韩五码| 久久亚洲春色中文字幕| 亚洲成人一级片| 亚洲福利视频三区| 一卡二卡三卡四卡| 蜜桃av噜噜一区| 自拍偷拍亚洲色图欧美| 亚洲一区 二区| 国外成人性视频| 日韩欧美在线观看一区二区| 欧美亚洲禁片免费| 欧美一区免费观看| 99久久er热在这里只有精品66| 可以在线看的黄色网址| 欧美激情777| 国产精品对白一区二区三区| 中日韩脚交footjobhd| 在线观看日韩av| wwwav在线播放| 欧美性生交大片免费| 亚洲不卡的av| 国产成人一级电影| 免费在线观看毛片网站| 99国产精品免费视频观看| 国产精品久久国产三级国电话系列| 麻豆mv在线观看| 久久精品国产亚洲7777| 视频一区 中文字幕| 欧美午夜一区二区三区免费大片| 九九久久免费视频| 久久精品视频网| 潘金莲一级淫片aaaaaaa| 母乳一区在线观看| 超碰在线免费观看97| 欧美电影在线观看免费| 成人中文字幕在线观看| 亚洲最新无码中文字幕久久| 久久久精品亚洲| 免费在线一级视频| 欧美videos中文字幕| 亚洲精品毛片一区二区三区| 亚洲已满18点击进入久久| 超薄肉色丝袜一二三| 成人av免费在线观看| 亚洲一级免费在线观看| 一本色道久久综合亚洲精品不卡| 亚洲伊人婷婷| 亚洲理论电影片| 成人三级在线| 宅男噜噜噜66国产精品免费| 日产精品久久久一区二区福利| 欧美aaaxxxx做受视频| 中文字幕在线精品| 黄色av免费在线观看| 精品国内二区三区| 99国产揄拍国产精品| 在线国产亚洲欧美| 久久久国产精品成人免费| 亚洲精品乱码久久久久| 国产wwwwxxxx| 国产欧美日韩中文久久| 国产精品伦子伦| 成人免费福利片| 精品人妻人人做人人爽夜夜爽| 久久99精品国产| xx欧美撒尿嘘撒尿xx| 三级影片在线观看欧美日韩一区二区 | 成全电影播放在线观看国语| 亚洲男子天堂网| 天天干天天爽天天操| 精品91自产拍在线观看一区| 亚洲第一成人av| 日韩午夜在线观看视频| 一级淫片免费看| 欧美日韩成人综合天天影院 | 91精品国产免费| 97精品人妻一区二区三区| 欧美三级在线视频| 这里只有精品免费视频| 91国产免费看| 国产无遮挡又黄又爽又色视频| 色综合激情五月| 日批视频免费在线观看| 色哟哟国产精品| 91丨九色丨海角社区| 欧美色老头old∨ideo| 最近中文字幕在线观看| 欧美三级中文字| 91高潮大合集爽到抽搐| 51精品国自产在线| 国产男男gay体育生白袜| 欧美一级高清片| 亚洲AV无码精品自拍| 欧美成人精品二区三区99精品| 亚洲国产精品一| 亚洲国产另类 国产精品国产免费| 欧美一级淫片aaaaaa| 日韩电影免费观看中文字幕| 水莓100在线视频| 在线日韩中文字幕| 麻豆影视在线观看_| 色综合色综合网色综合| bl在线肉h视频大尺度| 2018日韩中文字幕| 浪潮色综合久久天堂| 国产综合福利在线| 91成人午夜| 欧美日韩在线一二三| 久久精品播放| 最近中文字幕免费mv| 激情久久久久久| 成年人网站大全| 国产自产高清不卡| 欧产日产国产精品98| 久久久精品日韩欧美| 国产精品久久久免费看| 亚洲成人动漫av| 丰满人妻一区二区三区四区| 欧美一区二区成人6969| 无码精品视频一区二区三区| 在线日韩欧美视频| av丝袜在线| 国产在线观看91精品一区| 亚洲一二av| 亚洲a∨一区二区三区| 国内精品久久久久国产盗摄免费观看完整版| 成年人午夜免费视频| 蜜臀av性久久久久av蜜臀妖精| 第一页在线视频| 亚洲国产高清aⅴ视频| 日日骚一区二区三区| 在线观看日韩av先锋影音电影院| 国产av无码专区亚洲av| 亚洲午夜小视频| 成人福利电影| 成人福利在线视频| 蜜桃精品wwwmitaows| 高清无码视频直接看| 日韩成人免费电影| 国产精品久久久久久亚洲av| 亚洲国产成人私人影院tom| 国产在线观看成人| 欧美高清www午色夜在线视频| 天堂av电影在线观看| 超碰91人人草人人干| 性欧美超级视频| 国产精品一区二区三区免费| 99国产精品一区二区| 欧美视频第一区| 大白屁股一区二区视频| 天天爽天天爽天天爽| 日本高清无吗v一区| 日批免费在线观看| 欧美精品亚州精品| 国产精品久久久久77777丨| 精品国产一区二区三区四区vr| 中文无码久久精品| 色乱码一区二区三区在线| 久久精品在线免费观看| 天堂网一区二区三区| 日韩视频一区二区| 国精产品一区| 成人h视频在线观看播放| 成人精品视频| 成人在线观看黄| 91色在线porny| 国产精品suv一区二区69| 欧美一区二区女人| 成人在线网址| 成人做爰www免费看视频网站| 色综合久久一区二区三区| 亚洲无吗一区二区三区| 国产三级欧美三级日产三级99| 九九精品免费视频| 亚洲欧洲高清在线| 欧美特黄aaaaaaaa大片| 欧美国产二区| 久久久亚洲人| www久久久久久久| 欧美在线啊v一区| av小片在线| 国产日韩精品综合网站| 97视频精品| 999在线精品视频| 亚洲欧美日韩小说| www日本视频| 久久久女女女女999久久| 国产 日韩 欧美 综合 一区| 国产96在线 | 亚洲| 26uuu精品一区二区在线观看| 久久不卡免费视频| 亚洲人成在线观| 欧美日韩女优| 亚洲 欧洲 日韩| 国产福利不卡视频| 久久午夜无码鲁丝片午夜精品| 欧美sm极限捆绑bd| 小早川怜子影音先锋在线观看| 日本公妇乱淫免费视频一区三区| 日本sm残虐另类| 久艹在线观看视频| 欧美大片在线观看| 亚洲天堂免费电影| 午夜精品一区二区三区在线观看| 久久99精品久久久久久久久久久久| 欧美h片在线观看| 精品成人佐山爱一区二区| 精品国产免费人成网站| 亚洲欧美丝袜| 高清在线不卡av| 麻豆精品久久久久久久99蜜桃| 在线观看国产欧美| 亚洲高清在线一区| 久久久久久久少妇| 中文字幕综合网| 午夜av免费在线观看| 国产精品99久久久久久白浆小说| 图片区亚洲欧美小说区| 黄色免费看视频| 欧美巨大另类极品videosbest | 午夜在线一区二区| 日本 欧美 国产| 亚洲国产精久久久久久久| aaaa欧美| 国产资源在线免费观看| 国产欧美日韩激情| 免费看黄色一级视频| 国产精品激情自拍| 欧美欧美全黄| 九九热免费在线| 欧美精品一区二区久久久| 成人黄色毛片| 老太脱裤让老头玩ⅹxxxx| 国产精品久久久久桃色tv| 视频污在线观看| 亚洲综合在线小说| 日本不卡不码高清免费观看| 国产在线视频卡一卡二|