55 research outputs found
Making Python Code Idiomatic by Automatic Refactoring Non-Idiomatic Python Code with Pythonic Idioms
Compared to other programming languages (e.g., Java), Python has more idioms
to make Python code concise and efficient. Although pythonic idioms are well
accepted in the Python community, Python programmers are often faced with many
challenges in using them, for example, being unaware of certain pythonic idioms
or do not know how to use them properly. Based on an analysis of 7,638 Python
repositories on GitHub, we find that non-idiomatic Python code that can be
implemented with pythonic idioms occurs frequently and widely. Unfortunately,
there is no tool for automatically refactoring such non-idiomatic code into
idiomatic code. In this paper, we design and implement an automatic refactoring
tool to make Python code idiomatic. We identify nine pythonic idioms by
systematically contrasting the abstract syntax grammar of Python and Java. Then
we define the syntactic patterns for detecting non-idiomatic code for each
pythonic idiom. Finally, we devise atomic AST-rewriting operations and
refactoring steps to refactor non-idiomatic code into idiomatic code. We test
and review over 4,115 refactorings applied to 1,065 Python projects from
GitHub, and submit 90 pull requests for the 90 randomly sampled refactorings to
84 projects. These evaluations confirm the high-accuracy, practicality and
usefulness of our refactoring tool on real-world Python code. Our refactoring
tool can be accessed at 47.242.131.128:5000.Comment: 12 pages, accepted to ESEC/FSE'202
Towards Responsible AI in the Era of ChatGPT: A Reference Architecture for Designing Foundation Model-based AI Systems
The release of ChatGPT, Bard, and other large language model (LLM)-based
chatbots has drawn huge attention on foundations models worldwide. There is a
growing trend that foundation models will serve as the fundamental building
blocks for most of the future AI systems. However, incorporating foundation
models in AI systems raises significant concerns about responsible AI due to
their black box nature and rapidly advancing super-intelligence. Additionally,
the foundation model's growing capabilities can eventually absorb the other
components of AI systems, introducing the moving boundary and interface
evolution challenges in architecture design. To address these challenges, this
paper proposes a pattern-oriented responsible-AI-by-design reference
architecture for designing foundation model-based AI systems. Specially, the
paper first presents an architecture evolution of AI systems in the era of
foundation models, from "foundation-model-as-a-connector" to
"foundation-model-as-a-monolithic architecture". The paper then identifies the
key design decision points and proposes a pattern-oriented reference
architecture to provide reusable responsible-AI-by-design architectural
solutions to address the new architecture evolution and responsible AI
challenges. The patterns can be embedded as product features of foundation
model-based AI systems and can enable organisations to capitalise on the
potential of foundation models while minimising associated risks
Prompt Sapper: LLM-Empowered Software Engineering Infrastructure for AI-Native Services
Foundation models, such as GPT-4, DALL-E have brought unprecedented AI
"operating system" effect and new forms of human-AI interaction, sparking a
wave of innovation in AI-native services, where natural language prompts serve
as executable "code" directly (prompt as executable code), eliminating the need
for programming language as an intermediary and opening up the door to personal
AI. Prompt Sapper has emerged in response, committed to support the development
of AI-native services by AI chain engineering. It creates a large language
model (LLM) empowered software engineering infrastructure for authoring AI
chains through human-AI collaborative intelligence, unleashing the AI
innovation potential of every individual, and forging a future where everyone
can be a master of AI innovation. This article will introduce the R\&D
motivation behind Prompt Sapper, along with its corresponding AI chain
engineering methodology and technical practices
AI Chain on Large Language Model for Unsupervised Control Flow Graph Generation for Statically-Typed Partial Code
Control Flow Graphs (CFGs) are essential for visualizing, understanding and
analyzing program behavior. For statically-typed programming language like
Java, developers obtain CFGs by using bytecode-based methods for compilable
code and Abstract Syntax Tree (AST)-based methods for partially uncompilable
code. However, explicit syntax errors during AST construction and implicit
semantic errors caused by bad coding practices can lead to behavioral loss and
deviation of CFGs.To address the issue, we propose a novel approach that
leverages the error-tolerant and understanding ability of pre-trained Large
Language Models (LLMs) to generate CFGs. Our approach involves a Chain of
Thought (CoT) with four steps: structure hierarchy extraction, nested code
block extraction, CFG generation of nested code blocks, and fusion of all
nested code blocks' CFGs. To address the limitations of the original CoT's
single-prompt approach (i.e., completing all steps in a single generative
pass), which can result in an ``epic'' prompt with hard-to-control behavior and
error accumulation, we break down the CoT into an AI chain with explicit
sub-steps. Each sub-step corresponds to a separate AI-unit, with an effective
prompt assigned to each unit for interacting with LLMs to accomplish a specific
purpose.Our experiments confirmed that our method outperforms existing CFG
tools in terms of node and edge coverage, especially for incomplete or
erroneous code. We also conducted an ablation experiment and confirmed the
effectiveness of AI chain design principles: Hierarchical Task Breakdown, Unit
Composition, and Mix of AI Units and Non-AI Units.Our work opens up new
possibilities for building foundational software engineering tools based on
LLMs, as opposed to traditional program analysis methods
A Taxonomy of Foundation Model based Systems through the Lens of Software Architecture
The recent release of large language model (LLM) based chatbots, such as
ChatGPT, has attracted huge interest in foundation models. It is widely
believed that foundation models will serve as the fundamental building blocks
for future AI systems. As foundation models are in their early stages, the
design of foundation model based systems has not yet been systematically
explored. There is limited understanding about the impact of introducing
foundation models in software architecture. Therefore, in this paper, we
propose a taxonomy of foundation model based systems, which classifies and
compares the characteristics of foundation models and design options of
foundation model based systems. Our taxonomy comprises three categories: the
pretraining and adaptation of foundation models, the architecture design of
foundation model based systems, and responsible-AI-by-design. This taxonomy can
serve as concrete guidance for making major architectural design decisions when
designing foundation model based systems and highlights trade-offs arising from
design decisions
Towards Responsible Generative AI: A Reference Architecture for Designing Foundation Model based Agents
Foundation models, such as large language models (LLMs), have been widely
recognised as transformative AI technologies due to their capabilities to
understand and generate content, including plans with reasoning capabilities.
Foundation model based agents derive their autonomy from the capabilities of
foundation models, which enable them to autonomously break down a given goal
into a set of manageable tasks and orchestrate task execution to meet the goal.
Despite the huge efforts put into building foundation model based agents, the
architecture design of the agents has not yet been systematically explored.
Also, while there are significant benefits of using agents for planning and
execution, there are serious considerations regarding responsible AI related
software quality attributes, such as security and accountability. Therefore,
this paper presents a pattern-oriented reference architecture that serves as
guidance when designing foundation model based agents. We evaluate the
completeness and utility of the proposed reference architecture by mapping it
to the architecture of two real-world agents
Prompt Sapper: A LLM-Empowered Production Tool for Building AI Chains
The emergence of foundation models, such as large language models (LLMs)
GPT-4 and text-to-image models DALL-E, has opened up numerous possibilities
across various domains. People can now use natural language (i.e. prompts) to
communicate with AI to perform tasks. While people can use foundation models
through chatbots (e.g., ChatGPT), chat, regardless of the capabilities of the
underlying models, is not a production tool for building reusable AI services.
APIs like LangChain allow for LLM-based application development but require
substantial programming knowledge, thus posing a barrier. To mitigate this, we
propose the concept of AI chain and introduce the best principles and practices
that have been accumulated in software engineering for decades into AI chain
engineering, to systematise AI chain engineering methodology. We also develop a
no-code integrated development environment, Prompt Sapper, which embodies these
AI chain engineering principles and patterns naturally in the process of
building AI chains, thereby improving the performance and quality of AI chains.
With Prompt Sapper, AI chain engineers can compose prompt-based AI services on
top of foundation models through chat-based requirement analysis and visual
programming. Our user study evaluated and demonstrated the efficiency and
correctness of Prompt Sapper.Comment: 23 pages, 5 figures, accepted to TOSEM 202
Silent Vulnerable Dependency Alert Prediction with Vulnerability Key Aspect Explanation
Due to convenience, open-source software is widely used. For beneficial
reasons, open-source maintainers often fix the vulnerabilities silently,
exposing their users unaware of the updates to threats. Previous works all
focus on black-box binary detection of the silent dependency alerts that suffer
from high false-positive rates. Open-source software users need to analyze and
explain AI prediction themselves. Explainable AI becomes remarkable as a
complementary of black-box AI models, providing details in various forms to
explain AI decisions. Noticing there is still no technique that can discover
silent dependency alert on time, in this work, we propose a framework using an
encoder-decoder model with a binary detector to provide explainable silent
dependency alert prediction. Our model generates 4 types of vulnerability key
aspects including vulnerability type, root cause, attack vector, and impact to
enhance the trustworthiness and users' acceptance to alert prediction. By
experiments with several models and inputs, we confirm CodeBERT with both
commit messages and code changes achieves the best results. Our user study
shows that explainable alert predictions can help users find silent dependency
alert more easily than black-box predictions. To the best of our knowledge,
this is the first research work on the application of Explainable AI in silent
dependency alert prediction, which opens the door of the related domains
Let's Chat to Find the APIs: Connecting Human, LLM and Knowledge Graph through AI Chain
API recommendation methods have evolved from literal and semantic keyword
matching to query expansion and query clarification. The latest query
clarification method is knowledge graph (KG)-based, but limitations include
out-of-vocabulary (OOV) failures and rigid question templates. To address these
limitations, we propose a novel knowledge-guided query clarification approach
for API recommendation that leverages a large language model (LLM) guided by
KG. We utilize the LLM as a neural knowledge base to overcome OOV failures,
generating fluent and appropriate clarification questions and options. We also
leverage the structured API knowledge and entity relationships stored in the KG
to filter out noise, and transfer the optimal clarification path from KG to the
LLM, increasing the efficiency of the clarification process. Our approach is
designed as an AI chain that consists of five steps, each handled by a separate
LLM call, to improve accuracy, efficiency, and fluency for query clarification
in API recommendation. We verify the usefulness of each unit in our AI chain,
which all received high scores close to a perfect 5. When compared to the
baselines, our approach shows a significant improvement in MRR, with a maximum
increase of 63.9% higher when the query statement is covered in KG and 37.2%
when it is not. Ablation experiments reveal that the guidance of knowledge in
the KG and the knowledge-guided pathfinding strategy are crucial for our
approach's performance, resulting in a 19.0% and 22.2% increase in MAP,
respectively. Our approach demonstrates a way to bridge the gap between KG and
LLM, effectively compensating for the strengths and weaknesses of both.Comment: Accepted on ASE'202
- …